In PHP gibt es viele Funktionen, die sich mit Array -Kreuzungen befassen, darunter Array_intersect_assoc und array_intersect_uassoc sind zwei Funktionen, die oft verwirrt sind, aber sehr ähnliche Funktionen haben. Sie alle werden verwendet, um den Schnittpunkt mehrerer Arrays zu berechnen, verhalten sich jedoch beim Vergleich von Arrayschlüssel (Schlüssel) unterschiedlich. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen im Detail erläutert und praktische Vorschläge abgeben.
Array_intersect_assoc (Array $ Array1, Array $ Array2, Array ... $ Arrays): Array
Berechnen Sie Array -Kreuzungen und berücksichtigen Sie nicht nur den Wert (Wert) beim Vergleich, sondern vergleichen Sie auch streng die Schlüssel. Der Schlüsselvergleich ist ein Standard -Gleichstellungsurteil mit PHP (d. H. == ).
Array_intersect_uassoc (Array $ Array1, Array $ array2, Array ... $ Arrays, Callable $ key_compare_func): Array
Ähnlich wie bei array_intersect_assoc , der Schlüsselvergleich verwendet jedoch die benutzerdefinierte Rückruffunktion $ key_compare_func anstelle des Standardgleichheitsvergleichs.
Merkmale | Array_intersect_assoc | array_intersect_uassoc |
---|---|---|
Vergleichen Sie Werte | Ja | Ja |
Vergleichsschlüssel | Ja | Ja |
So vergleichen Sie Schlüssel | Standardschlüsselvergleich (==) | Benutzerdefinierte Rückruffunktionen zum Vergleich |
Ob Sie benutzerdefinierte Vergleiche unterstützen | NEIN | Ja |
Nutzungsbeispiel | Keine Notwendigkeit, in Vergleichsfunktionen zu bestehen | Eine Rückruffunktion, die im Vergleichstaste übergeben werden muss |
<?php
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "1" => "red"];
$array2 = ["a" => "green", "1" => "red", "b" => "brown", "c" => "blue"];
// array_intersect_assoc Vergleichen Sie direkt Schlüssel und Werte
$result_assoc = array_intersect_assoc($array1, $array2);
// Ausgangsergebnis:["a" => "green", "b" => "brown", "c" => "blue"]
print_r($result_assoc);
// Benutzerdefinierte Vergleichsfunktionen,Fallempfindlichkeit beim Vergleich von Schlüssel
function key_compare_func($key1, $key2) {
return strcmp($key1, $key2);
}
$array3 = ["A" => "green", "b" => "brown", "c" => "blue"];
$result_uassoc = array_intersect_uassoc($array1, $array3, "key_compare_func");
// Ausgangsergebnis:["b" => "brown", "c" => "blue"]
print_r($result_uassoc);
?>
Verwenden Sie Array_intersect_assoc :
Es ist eine kurze und effiziente Wahl, wenn Sie nur Array -Schlüssel und -Werte vergleichen müssen und keine benutzerdefinierten Regeln benötigen (z. B. unempfindlich, Typumwandlung usw.).
Verwenden Sie Array_intersect_uassoc :
Wenn Sie besondere Bedürfnisse für die Art und Weise haben, wie Schlüssel verglichen werden, wie z.
Fallempfindlichkeit
Benötigen Sie eine komplexere Vergleichslogik
Vergleichstasten sind benutzerdefinierte Objekte oder komplexe Typen
Zu diesem Zeitpunkt können flexible Schlüsselvergleichsregeln durch Übergabe in Rückruffunktionen implementiert werden.
Array_intersect_assoc ist eine Array-Kreuzung basierend auf Standard-Schlüsselwertvergleiche.
Array_intersect_uassoc bietet einen flexibleren Schlüsselvergleichsmechanismus, mit dem Benutzer die Vergleichslogik anpassen können.
Die Entscheidung, ob Sie benutzerdefinierte Schlüssel basierend auf den Geschäftsanforderungen vergleichen müssen, kann die Auswahl der richtigen Funktion robusteren und pflegenden Code schreiben.