(PHP 5, PHP 7, PHP 8)
array_diff_uassoc — Berechnet den Unterschied von Arrays mit zusätzlicher Indexprüfung, welche durch eine benutzerdefinierte Callback-Funktion vorgenommen wird
Vergleicht array
mit arrays
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.
array
Das Array für den Vergleich.
arrays
Die 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.
Wenn die Vergleichsfunktion nicht-ganzzahlige Werte zurückgibt, z. B. vom Typ float, wird der Rückgabewert des Callbacks intern in den Typ int umgewandelt. Werte wie 0.99
und 0.1
werden also beide in einen Integer-Wert von 0
umgewandelt, wodurch diese Werte als gleichwertig eingestuft werden.
Gibt ein Array zurück, welches alle Werte aus array
enthält, die in keinem der anderen Arrays enthalten sind.
Beispiel #1 array_diff_uassoc()-Beispiel
In diesem Beispiel ist das "a" => "gruen"
-Paar in beiden Arrays enthalten und taucht daher nicht in der Ausgabe der Funktion auf. Andererseits ist das Paar 0 => "rot"
in der Ausgabe, weil dem Wert "rot"
im ersten Array automatisch der Schlüssel 0
zugewiesen wird, während ihm im zweiten Array 1
zugewiesen wird, weil der Schlüssel 0
bereits von gelb
belegt ist.
<?php
function key_compare_func($a, $b)
{
return $a <=> $b;
}
$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 überprüft nur eine Dimension eines n-dimensionalen Arrays. Es ist möglich, tiefere Dimensionen zu überprüfen, indem zum Beispiel
array_diff_uassoc($array1[0], $array2[0], "key_compare_func");
verwendet wird.