In PHP ist Array_Diff_Uassoc () eine Funktion, die zwei assoziative Arrays vergleicht und die Differenz zwischen ihnen zurückgibt. Es wird nicht nur basierend auf den Schlüsselwerten des Arrays vergleichbar, sondern ermöglicht auch benutzerdefinierte Vergleichsfunktionen, um festzustellen, ob die Werte gleich sind. Diese Funktion ist sehr geeignet, um mehrdimensionale Arrays zu behandeln oder wenn eine besondere Vergleichslogik erforderlich ist.
Die grundlegende Syntax von array_diff_uassoc () lautet wie folgt:
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 : Das erste assoziative Array.
$ array2 : das zweite assoziative Array.
$ key_compare_func : Eine Rückruffunktion zum Vergleich von Array -Tasten. Diese Funktion nimmt zwei Parameter vor und gibt einen Ganzzahlwert zurück, was deren Vergleichsergebnisse angibt.
Angenommen, wir haben zwei assoziative Arrays, wir möchten den Unterschied zwischen ihnen herausfinden, insbesondere die Elemente, die sich im ersten Array befinden, und nicht im zweiten Array.
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "blueberry"
);
$result = array_diff_uassoc($array1, $array2, "key_compare");
print_r($result);
function key_compare($key1, $key2) {
return strcmp($key1, $key2);
}
?>
Wir definieren zwei assoziative Arrays $ Array1 und $ Array2 .
Mit der Funktion array_diff_uassoc () übergeben wir zwei Arrays und eine Vergleichsfunktion KEY_COMPare .
Die Funktion von KEY_COMPare verwendet Strcmp (), um die alphabetische Reihenfolge der Schlüssel zu vergleichen. Sein Rückgabewert bestimmt die relative Reihenfolge der beiden Schlüssel:
Wenn eine negative Zahl zurückgegeben wird, bedeutet dies, dass $ key1 weniger als $ key2 ist.
Wenn Null zurückgegeben wird, bedeutet dies, dass $ key1 $ key2 entspricht.
Wenn eine positive Zahl zurückgegeben wird, bedeutet dies, dass $ key1 größer als $ key2 ist.
Die Funktion array_diff_uassoc () gibt Elemente in $ array1 zurück, die unterschiedliche entsprechende Schlüssel oder Werte in $ array2 haben.
Array
(
[c] => cherry
)
Wie aus der obigen Ausgabe ersichtlich ist, gibt Array_Diff_Uassoc () "C" => "Cherry" in $ array1 zurück, da dieses Element den entsprechenden Schlüssel "C" in $ array2 nicht findet.
Mit Array_Diff_Uassoc () können Sie Vergleichsfunktionen anpassen, nicht nur einfache Zeichenfolge oder numerische Vergleiche. Sie können beispielsweise Schlüsselwertpaare basierend auf einer bestimmten Logik vergleichen. Nehmen wir beispielsweise an, wir möchten die Länge der Array -Werte anstelle von wörtlichen Werten vergleichen:
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "banana",
"c" => "pear"
);
$result = array_diff_uassoc($array1, $array2, "length_compare");
print_r($result);
function length_compare($key1, $key2) {
return strlen($key1) - strlen($key2);
}
?>
Angenommen, wir arbeiten an einem Array mit URLs und müssen Array_Diff_Uassoc () verwenden, um die Unterschiede herauszufinden. Hier ist ein spezifisches Beispiel, in dem wir den Domänennamen durch m66.net ersetzen: