Here is an example from PHP documentation about array_diff_assoc
.
In this example you see the
"a" => "green"
pair is present in both arrays and thus it is not in the output from the function. Unlike this, the pair0 => "red"
is in the output because in the second argument"red"
has key which is1
.<?php $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result = array_diff_assoc($array1, $array2); print_r($result); ?>
The above example will output:
Array ( [b] => brown [c] => blue [0] => red )
red
is present in both arrays, but it is returned in the output of array_diff_assoc
, why PHP think that red
in $array1
and $array2
is different?
That is because in the first array the index of red is 0 and in the second array the index of red is 1 so they are different.
From the docs:
Computes the difference of arrays with additional index check
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
var_dump($array1);
var_dump($array2);
Output:
array(4) {
["a"]=>
string(5) "green"
["b"]=>
string(5) "brown"
["c"]=>
string(4) "blue"
[0]=>
string(3) "red"
}
array(3) {
["a"]=>
string(5) "green"
[0]=>
string(6) "yellow"
[1]=>
string(3) "red"
}
The key for red in $array1 is 0:
$array1 ( [a] => green [b] => brown [c] => blue [0] => red )
$array2 ( [a] => green [0] => yellow [1] => red )