array_diff_uassoc
array_diff_uassoc($array, $arrays, $key_compare_func)
Macht dasselbe wie array_diff_assoc(): Sie gibt die Elemente des ersten Arrays zurück, die in den anderen Arrays nicht denselben Schlüssel mit demselben Wert haben. Die Schlüssel vergleicht sie aber mit einer eigenen Funktion, zum Beispiel ohne Rücksicht auf Groß- und Kleinschreibung.
Parameter
- $array – das Array, aus dem ausgewählt wird.
- $arrays – das Array, mit dem verglichen wird. Es können mehrere Arrays sein.
- $key_compare_func – der letzte Parameter: eine Funktion, die zwei Schlüssel vergleicht. Sie gibt eine negative Zahl, null oder eine positive Zahl zurück, genauso wie bei uksort().
Beispiele
$saved = array("Name" => "Peter", "Ort" => "Hamburg", "PLZ" => "20095");
$sent = array("name" => "Peter", "ort" => "Bremen");
// Schlüssel ohne Rücksicht auf Groß- und Kleinschreibung, Werte genau
echo json_encode(array_diff_uassoc($saved, $sent, "strcasecmp")); // {"Ort":"Hamburg","PLZ":"20095"}
// array_diff_assoc unterscheidet bei Schlüsseln Groß- und Kleinschreibung
echo count(array_diff_assoc($saved, $sent)); // 3
// Werte werden als Zeichenketten verglichen: 1 und "1" sind gleich, "1.0" und 1 nicht
echo json_encode(array_diff_uassoc(array("a" => 1, "b" => "1.0"), array("a" => "1", "b" => 1), "strcmp")); // {"b":"1.0"}
Worauf Sie achten sollten
- Die Vergleichsfunktion muss eine negative Zahl, null oder eine positive Zahl zurückgeben, nicht true und false. Die Funktion sortiert die Arrays intern, mit einer Antwort „gleich / ungleich“ kann sie ein falsches Ergebnis liefern, und PHP 8 gibt zudem einen Deprecated-Hinweis aus.
- Die eigene Funktion vergleicht nur die Schlüssel. Die Werte werden immer als Zeichenketten verglichen. Für einen eigenen Vergleich der Werte gibt es array_udiff_assoc(), für beides array_udiff_uassoc().
- Die Schlüssel und Werte des Ergebnisses stammen aus dem ersten Array.
- Die Funktion strcasecmp() setzt Groß- und Kleinschreibung nur bei Buchstaben ohne Umlaute gleich.
Verwandte Funktionen:
array_diff_assoc()
array_diff_ukey()
array_udiff_assoc()
array_intersect_uassoc()
strcasecmp()