(PHP 5, PHP 7)
array_diff_uassoc — Berechnet den Unterschied von Arrays mit zusätzlicher Indexprüfung, welche durch eine benutzerdefinierte Callback-Funktion vorgenommen wird
$array1
, array $array2
[, array $...
], callable $key_compare_func
) : array
Vergleicht array1
mit array2
und gibt den Unterschied zurück. Im Gegensatz zu
array_diff() werden die Arrays anhand ihrer Schlüssel
verglichen.
Im Gegensatz zu array_diff_assoc() wird für den Vergleich der Indizes keine interne Funktion verwendet, sondern eine benutzerdefinierte Callback-Funktion.
array1
Das Array für den Vergleich.
array2
Das Array, das damit verglichen wird.
...
Weitere Arrays, die damit verglichen werden.
key_compare_func
Die Vergleichsfunktion muss einen Integer kleiner als, gleich oder größer als Null zurückgeben, wenn das erste Argument respektive kleiner, gleich oder größer als das zweite ist.
Gibt ein array zurück, welches alle Werte aus
array1
enthält, die in keinem der anderen Arrays
enthalten sind.
Beispiel #1 array_diff_uassoc()-Beispiel
Das "a" => "gruen"-Paar ist in beiden Arrays enthalten und daher nicht in der Ausgabe der Funktion. Im Gegensatz dazu ist das Paar 0 => "rot" in der Ausgabe, weil "rot" im zweiten Argument 1 als Schlüssel hat.
<?php
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "gruen", "b" => "braun", "c" => "blau", "rot");
$array2 = array("a" => "gruen", "gelb", "rot");
$ergebnis = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($ergebnis);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [b] => braun [c] => blau [0] => rot )
Die Gleichheit von zwei Indizes wird durch die benutzerdefinierte Callback-Funktion überprüft.
Hinweis:
Diese Funktion prüft nur eine Dimension eines n-dimensionalen Arrays. Natürlich können tiefere Ebenen überprüft werden, indem zum Beispiel array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); verwendet wird.