In PHP, wann array_diff () und wann array_diff_uassoc () verwendet werden soll? Was sind die Unterschiede und anwendbaren Szenarien zwischen diesen beiden Funktionen?
PHP bietet viele integrierte Array-Betriebsfunktionen, darunter Array_Diff () und Array_Diff_Uassoc () zwei häufig verwendete Funktionen. Sie alle werden verwendet, um Unterschiede zwischen Arrays zu berechnen, unterscheiden sich jedoch in spezifischen Implementierungen und anwendbaren Szenarien. In diesem Artikel werden die Nutzungsszenarien, Unterschiede und ihre anwendbaren Situationen dieser beiden Funktionen analysiert.
Die Funktion array_diff () wird verwendet, um die Differenz zwischen zwei oder mehr Arrays zu berechnen und ein Array zurückzugeben, das alle Elemente enthält, die im ersten Array, jedoch nicht in anderen Arrays, erscheinen. Diese Funktion vergleicht die Werte des Arrays, ohne sich um die Schlüsselnamen des Arrays zu kümmern.
array_diff(array $array1, array $array2, array ...$arrays): array
<?php
$array1 = ["apple", "banana", "cherry"];
$array2 = ["banana", "cherry", "date"];
$result = array_diff($array1, $array2);
print_r($result);
?>
Ausgabe:
Array
(
[0] => apple
)
In diesem Beispiel gibt Array_Diff () ein Array zurück, das Elemente enthält, die in Array1, jedoch nicht in Array2 , vorhanden sind. Daher bleibt "Apple" erhalten, weil es in Array1 und nicht in Array2 erscheint.
array_diff () funktioniert, wenn Sie sich nur um die Unterschiede zwischen Array -Werten kümmern. Sie können beispielsweise Array_Diff () verwenden, um die Differenz zwischen den vom Benutzer übermittelten Formulardaten und den Systemdaten zu vergleichen oder festgelegte Unterschiede auszuführen.
Die Funktion array_diff_uassoc () ähnelt array_diff () . Der Hauptunterschied besteht darin, dass es nicht nur basierend auf den Wertenunterschieden verglichen, sondern auch Unterschiede in den Schlüsseldamen berücksichtigt und den Vergleich von Schlüsselwertpaaren im Array durch benutzerdefinierte Vergleichsfunktionen ermöglicht.
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
<?php
$array1 = ["apple" => "red", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "green"];
$result = array_diff_uassoc($array1, $array2, "strcasecmp");
print_r($result);
?>
Ausgabe:
Array
(
[apple] => red
)
In diesem Beispiel verwendet Array_Diff_Uassoc () StrCasecmp als Vergleichsfunktion. Strcasecmp vergleicht Schlüsselnamen (d. H. Fruchtnamen) im Array und ist nicht unterempfindlich. In Array1 hat der "Apple" -Taste den entsprechenden Wert "rot", während in Array2 keinen identischen Schlüssel gibt. Daher gibt Array_Diff_Uassoc () "Apple" => "rot" zurück.
array_diff_uassoc () ist geeignet, wenn Sie die Differenz basierend auf einem benutzerdefinierten Vergleich von Schlüsselnamen und Schlüsselwerten ermitteln müssen. Insbesondere im Umgang mit assoziativen Arrays ermöglicht Array_Diff_Uassoc () die Anpassung der Vergleichsregeln durch benutzerdefinierte Vergleichsfunktionen. Zu den gemeinsamen Szenarien gehört das Vergleich von Datenbankabfrageergebnissen, Verarbeitung mehrdimensionaler Arrays usw.
Merkmal | Array_diff () | array_diff_uassoc () |
---|---|---|
Vergleichsstandards | Vergleichen Sie nur die Werte des Arrays | Vergleichen Sie die Array -Werte und Schlüsselnamen gleichzeitig |
Ob Sie benutzerdefinierte Vergleiche unterstützen | Nicht unterstützt | Unterstützt den Vergleich der Schlüsselnamen durch benutzerdefinierte Vergleichsfunktionen |
Anwendbare Szenarien | Vergleich der Unterschiede in den Array -Werten | Vergleich der Unterschiede zwischen Array-Schlüsselwertpaaren, die benutzerdefinierte Vergleichsregeln unterstützen |
Verwenden Sie Array_Diff () : Wenn Sie sich nur um die Unterschiede in der Werte in einem Array kümmern, ist die Verwendung von Array_Diff () die einfachste und effizienteste Wahl. Vergleichen Sie beispielsweise Werte in zwei Arrays, um Elemente zu finden, die in einem Array, nicht jedoch in einem anderen, vorhanden sind.
Verwenden Sie Array_Diff_Uassoc () : Wenn Sie die Werte eines Arrays mit Schlüsselnamen vergleichen müssen oder wenn Sie Regeln für benutzerdefinierte Schlüsselnamen vergleichen müssen, ist es für die Verwendung von array_diff_uassoc () angemessener. Behandeln Sie beispielsweise assoziative Arrays oder wenn eine besondere Vergleichsanforderung für Schlüsselnamen vorliegt.
Array_Diff () wird verwendet, um die Differenz zwischen Array -Werten zu berechnen.
Zusätzlich zum Vergleich von Array -Werten ermöglicht Array_Diff_Uassoc () auch benutzerdefinierte Vergleichsregeln für Schlüsselnamen, die für komplexere Szenarien geeignet sind.
Bei der Auswahl hängt es davon ab, ob Ihre Bedürfnisse nur Werte vergleichen, oder die Unterschiede zwischen Schlüsselnamen und Schlüsselwerten berücksichtigen.
Durch das Verständnis der Unterschiede und anwendbaren Szenarien zwischen diesen beiden Funktionen können Sie flexibler mit Array -Unterschieden umgehen und die Effizienz und Lesbarkeit Ihres Codes optimieren.