In PHP werden Array_Diff () und Array_Diff_Ukey () beide zum Vergleich von Arrays verwendet, aber sie haben offensichtliche Unterschiede in ihren Arbeitsprinzipien und -nutzungsszenarien. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen im Detail erörtert und deren Nutzungsszenarien analysiert.
Die Funktion array_diff () wird verwendet, um die Werte von zwei oder mehr Arrays zu vergleichen und Elemente zurückzugeben, die im ersten Array vorhanden sind, jedoch nicht in anderen Arrays. Diese Funktion wird basierend auf dem Wert verglichen, unabhängig vom Schlüsselnamen.
array_diff(array $array1, array $array2, array ...$arrays): array
$array1 = ["apple" => "green", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "blue", "grape" => "purple"];
$result = array_diff($array1, $array2);
print_r($result);
Array
(
[apple] => green
)
In diesem Beispiel gibt Array_Diff () ein Element zurück, das im Array $ arrray1, jedoch nicht in $ array2 , vorhanden ist. Beachten Sie, dass Array_Diff () nur Werte vergleicht und keine Schlüssel verglichen.
Im Gegensatz zu Array_Diff () wird die Funktion array_diff_ukey () basierend auf den Schlüsselnamen des Arrays verglichen. Es wird vergleicht, ob der Schlüssel im ersten Array in anderen Arrays vorhanden ist, und schließt das Element nur aus dem Ergebnis aus, wenn die Schlüsselnamen nicht übereinstimmen.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$array1 = ["apple" => "green", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "blue", "grape" => "purple"];
$result = array_diff_ukey($array1, $array2, "key_compare");
print_r($result);
function key_compare($key1, $key2) {
return $key1 === $key2 ? 0 : -1;
}
Array
(
[apple] => green
)
In diesem Beispiel wird array_diff_ukey () mit dem Schlüsselnamen verglichen, wodurch der Schlüssel "Apple" in $ array1 zurückgibt, da es in $ array2 nicht existiert.
array_diff () : Vergleichen Sie die Werte des Arrays und ignorieren Sie die Schlüsselnamen. Anwendbar auf Wenn Sie sich nur darum kümmern, ob der Wert in anderen Arrays vorhanden ist.
array_diff_ukey () : Vergleichen Sie die Schlüsselnamen des Arrays und ignorieren Sie den Wert. Es funktioniert, wenn Sie sich um die Existenz des Schlüsselnamens kümmern, nicht ob die Werte gleich sind.
Verwenden Sie Array_Diff () : Wenn Sie die Werte eines Arrays vergleichen müssen, ist mit Array_Diff () eine geeignetere Wahl. Sie können diese Funktion beispielsweise verwenden, wenn Sie eindeutige Werte in einem Array finden möchten.
Verwenden Sie Array_Diff_Ukey () : Wenn Sie die Schlüsselnamen eines Arrays vergleichen müssen, ist es angemessener, Array_Diff_Ukey () zu verwenden. Es kann Ihnen helfen, bestimmte Schlüssel herauszufiltern, die sich nicht um den Inhalt des Werts kümmern. Wenn Sie beispielsweise ein assoziatives Array haben und sich nur darum kümmern, ob bestimmte bestimmte Schlüssel in anderen Arrays vorhanden sind, können Sie diese Funktion verwenden.
Der Hauptunterschied zwischen array_diff () und array_diff_ukey () besteht darin, dass sie verschiedene Objekte vergleichen: Der erstere wird basierend auf dem Wert des Arrays verglichen, während der letztere basierend auf dem Schlüsselnamen des Arrays verglichen wird. Abhängig von Ihren tatsächlichen Anforderungen kann die Auswahl der richtigen Funktion helfen, Arrays effizienter zu verarbeiten.