Aktueller Standort: Startseite> Neueste Artikel> Was ist der spezifische Unterschied zwischen array_intersect_uassoc und array_intersect_assoc und wann ist es angemessener zu bedienen?

Was ist der spezifische Unterschied zwischen array_intersect_uassoc und array_intersect_assoc und wann ist es angemessener zu bedienen?

gitbox 2025-08-30

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.


1. Einführung in grundlegende Funktionen

  • 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.


2. Spezifische Unterschiede

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

3. Codebeispiel

 <?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);
?>

4. Wann wählt zu welcher aus?

  • 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.


5. Zusammenfassung

  • 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.