Aktueller Standort: Startseite> Neueste Artikel> Was ist der Unterschied zwischen array_udiff_uassoc () und array_diff_uassoc ()?

Was ist der Unterschied zwischen array_udiff_uassoc () und array_diff_uassoc ()?

M66 2025-06-06

In PHP sind Array_udiff_uassoc () und Array_Diff_Uassoc () Funktionen, die zum Vergleich von Arrays verwendet werden, aber sie haben unterschiedliche Funktionen, Verwendungs- und Implementierungsmethoden. In diesem Artikel werden wir uns mit den Unterschieden zwischen diesen beiden Funktionen befassen und ihre Nutzungsszenarien und -funktionen diskutieren.

1. Funktion Einführung

  1. array_udiff_uassoc ()
    Die Funktion array_udiff_uassoc () gibt die Differenz zwischen zwei oder mehr Arrays zurück, während die Schlüsselnamen und Schlüsselwerte verglichen werden. Diese Funktion kann die Unterschiede zwischen Arrays durch benutzerdefinierte Schlüsselwertvergleichsfunktionen bestimmen.

    Funktionsprototyp:

     array_udiff_uassoc(array $array1, array $array2, callable $value_compare_func, callable $key_compare_func): array
    
    • Parameter :

      • $ array1, $ array2 : Das Array, das verglichen werden muss.

      • $ value_compare_func : Benutzerdefinierte Vergleichsfunktion, Gleichheit der Vergleichswerte.

      • $ key_compare_func : Benutzerdefinierte Vergleichsfunktion, Gleichheit der Vergleichstasten.

    Diese Funktion wird nicht nur basierend auf dem Wert vergleichen, sondern auch basierend auf dem Schlüsselnamen, der für Szenarien geeignet ist, in denen eine präzise Steuerung des Wertes und der Schlüsselvergleichslogik erforderlich ist.

  2. array_diff_uassoc ()
    Die Funktion array_diff_uassoc () ähnelt array_udiff_uassoc () , berücksichtigt jedoch nur die Werte und Schlüssel des Arrays und erlaubt den Benutzern nicht, die Vergleichslogik anzupassen. Es vergleicht die Unterschiede zwischen den beiden Arrays und gibt Elemente zurück, die nur im ersten Array erscheinen.

    Funktionsprototyp:

     array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
    
    • Parameter :

      • $ array1, $ array2 : Das Array, das verglichen werden muss.

      • $ key_compare_func : Eine Funktion, mit der verglichen wird, ob die Schlüsselnamen gleich sind.

    Diese Funktion vergleicht die Unterschiede in den Schlüsselnamen von Arrays mit einer benutzerdefinierten Schlüsselvergleichsfunktion, die für Szenarien geeignet ist, in denen nur eine benutzerdefinierte Schlüsselvergleichslogik erforderlich ist.

2. Funktionale Unterschiede

  1. Vergleichsinhalt

    • array_udiff_uassoc () vergleichen gleichzeitig den Schlüsselwert und den Schlüsselnamen des Arrays, was für Situationen geeignet ist, in denen Sie anpassen müssen, wie Array -Schlüssel und -Werte verglichen werden.

    • Array_Diff_Uassoc () vergleicht nur die Schlüsselnamenunterschiede des Arrays und ermöglicht es Ihnen, den Weg zum Vergleichen von Schlüssel anzupassen.

  2. Anzahl der Parameter

    • array_udiff_uassoc () kann mehrere Arrays zum Vergleich akzeptieren, während Array_diff_uassoc () nur die Unterschiede zwischen zwei Arrays vergleicht.

3. Verwenden Sie Szenarien

1. Array_udiff_Uassoc () Nutzungsszenario

Angenommen, Sie haben zwei Arrays, eine mit der ID und dem Namen des Benutzers und der andere mit der ID und dem Postfach des Benutzers, und Sie müssen diese beiden Arrays unter Berücksichtigung der Unterschiede in Schlüssel und Werten und Verwendung benutzerdefinierter Vergleichsregeln vergleichen.

 $array1 = [
    1 => 'John Doe',
    2 => 'Jane Smith',
    3 => 'George Brown'
];

$array2 = [
    1 => 'John Doe',
    2 => 'Jane S.',
    4 => 'Alice Green'
];

$value_compare_func = function ($a, $b) {
    return strcmp($a, $b);
};

$key_compare_func = function ($a, $b) {
    return $a - $b;
};

$result = array_udiff_uassoc($array1, $array2, $value_compare_func, $key_compare_func);
print_r($result);

Ausgabe:

 Array
(
    [3] => George Brown
)

In diesem Beispiel vergleicht Array_udiff_uassoc () die Werte und Schlüssel der beiden Arrays und gibt schließlich die Differenzterm in Array1 zurück.

2. Array_Diff_Uassoc () Nutzungsszenario

Wenn Sie nur Arrays basierend auf den Tastenunterschieden vergleichen müssen und sich nicht um die Werteunterschiede kümmern müssen, ist Array_Diff_Uassoc () eine geeignetere Wahl. Angenommen, Sie haben zwei Arrays, die Benutzer -ID und andere Informationen enthalten, und möchten Schlüssel finden, die im ersten Array, jedoch nicht im zweiten Array vorhanden sind.

 $array1 = [
    1 => 'John Doe',
    2 => 'Jane Smith',
    3 => 'George Brown'
];

$array2 = [
    1 => 'John Doe',
    4 => 'Alice Green'
];

$key_compare_func = function ($a, $b) {
    return $a - $b;
};

$result = array_diff_uassoc($array1, $array2, $key_compare_func);
print_r($result);

Ausgabe:

 Array
(
    [2] => Jane Smith
    [3] => George Brown
)

In diesem Beispiel gibt Array_Diff_Uassoc () nur die Elemente in Array1 basierend auf der Differenz der Schlüssel zurück.

4. Zusammenfassung

Merkmal array_udiff_uassoc () array_diff_uassoc ()
Vergleichsinhalt Werte und Schlüssel Nur Schlüssel
Ob Sie benutzerdefinierte Vergleichsfunktionen zuzulassen Ja (Werte und Schlüssel können mit Sonderanfertigung verglichen werden) Ja (nur benutzerdefinierte Schlüsselvergleiche sind erlaubt)
Anwendbare Szenarien Der Unterschied zwischen Werten und Tasten muss berücksichtigt werden Kümmern Sie sich nur um die Unterschiede in den Schlüssel

Im Allgemeinen hängt die Verwendung der Verwendung von Array_udiff_Uassoc () oder Array_Diff_Uassoc () davon ab, ob Sie benutzerdefinierte Werte vergleichen müssen und ob Sie Werte mit Tasten vergleichen müssen. Wenn Sie den Unterschied zwischen diesen beiden Funktionen verstehen, können Sie die richtige Wahl auf der Grundlage Ihrer spezifischen Anforderungen treffen.