Notatki PHP

prywatne zapiski na kamieniu

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
)