array_diff_assoc - Oblicza różnicę między tablicami z dodatkowym sprawdzaniem kluczy.
array array_diff_assoc ( array $tablica1 , array $tablica2 [, array $ ... ] )
array_diff_assoc() zwraca tablicę zawierającą wszystkie wartości z array1, które nie są obecne w żadnym z innych argumentów. Przy porównaniu, w przeciwieństwie do funkcji array_diff(), używane są także klucze.
$tablica1 = array("a" => "zielony", "b" => "brązowy", "c" => "niebieski", "czerwony"); $tablica2 = array("a" => "zielony", "żółty", "czerwony"); $wynik = array_diff_assoc($tablica1, $tablica2); print_r($wynik);
Otrzymamy:
Array ( [b] => brązowy [c] => niebieski [0] => czerwony )
W powyższym przykładzie para "a" => "zielony" występuje w obu tablicach, i w związku z tym nie jest dodawana do wyniku działania funkcji. Para 0 => "czerwony" znajduje się w tablicy wynikowej, ponieważ w drugim argumencie "czerwony" ma klucz 1.
Dwie wartości z par klucz => wartość są uznawane za równe tylko jeśli (string) $element1 === (string) $element2 . Inaczej mówiąc, zachodzi ścisłe sprawdzanie, a więc reprezentacje tekstowe muszą być takie same.
Weźmy:
$a = array('a'=>1,'b'=>2,'c'=>3); $b = array('a'=>1,'b'=>2,'d'=>4);
print_r(array_merge(array_diff_assoc($a,$b),array_diff_assoc($b,$a)));
array ( [c] => 3 [d] => 4 )