array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diffComputes the difference of arrays

Description

array_diff(array $array, array ...$arrays): array

Compares array against one or more other arrays and returns the values in array that are not present in any of the other arrays.

Parameters

array

The array to compare from

arrays

Arrays to compare against

Return Values

Returns an array containing all the entries from array that are not present in any of the other arrays. Keys in the array array are preserved.

Examples

Example #1 array_diff() example

<?php
$array1 
= array("a" => "green""red""blue""red");
$array2 = array("b" => "green""yellow""red");
$result array_diff($array1$array2);

print_r($result);
?>

Multiple occurrences in $array1 are all treated the same way. This will output :

Array
(
    [1] => blue
)

Example #2 array_diff() example with non-matching types

Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. That is, when the string representation is the same.

<?php
// This will generate a Notice that an array cannot be cast to a string.
$source = [1234];
$filter = [34, [5], 6];
$result array_diff($source$filter);

// Whereas this is fine, since the objects can cast to a string.
class {
  private 
$v;

  public function 
__construct(string $v) {
    
$this->$v;
  }

  public function 
__toString() {
    return 
$this->v;
  }
}

$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];

$result array_diff($source$filter);

// $result now contains one instance of S('a');
?>

To use an alternate comparison function, see array_udiff().

Notes

Note:

This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array1[0], $array2[0]);.

See Also