(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.