Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Array_Diff_Ukey (), um Tasten auf obersten Ebenen für mehrdimensionale Arrays zu vergleichen

Verwenden Sie Array_Diff_Ukey (), um Tasten auf obersten Ebenen für mehrdimensionale Arrays zu vergleichen

M66 2025-05-14

In der täglichen PHP -Entwicklung begegnen wir häufig Situationen, in denen wir die Unterschiede zwischen Arrays vergleichen müssen. Für mehrdimensionale Arrays ist Array_Diff_Ukey () ein sehr praktisches Werkzeug, wenn wir uns nur um die Unterschiede in den Tasten der obersten Ebene (Tasten der ersten Ebene) kümmern und ihre Werte nicht vergleichen.

In diesem Artikel wird erläutert, wie Sie Array_Diff_Ukey () verwenden, um die Tasten der obersten Ebene von zwei mehrdimensionalen Arrays zu vergleichen und die verschiedenen Teile herauszufinden.

1. Funktion Einführung

Array_Diff_Ukey () wird verwendet, um Schlüsselnamen basierend auf der vom Benutzer bereitgestellten Rückruffunktion zu vergleichen, um die Teile in zwei oder mehr Arrays herauszufinden, bei denen die Schlüsselnamen nicht dupliziert werden.

Grammatik:

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 : Das zu vergleichen.

  • $ array2 : Das Array, das mit dem ersten Array verglichen wurde.

  • $ key_compare_func : Eine benutzerdefinierte Schlüsselvergleichsfunktion.

2. Anwendungsszenario Beschreibung

Angenommen, Sie haben zwei mehrdimensionale Arrays, die zwei verschiedene Konfigurationssätze darstellen. Sie möchten die Tasten der obersten Ebene (Tasten der ersten Ebene) finden, die in der Hauptkonfiguration vorhanden sind, jedoch nicht in der Vergleichskonfiguration.

 $configMain = [
    'database' => [
        'host' => 'localhost',
        'port' => 3306
    ],
    'cache' => [
        'enabled' => true
    ],
    'api' => [
        'endpoint' => 'https://m66.net/api'
    ]
];

$configCompare = [
    'database' => [
        'host' => '127.0.0.1',
        'port' => 3306
    ],
    'cache' => [
        'enabled' => false
    ]
];

Wir möchten herausfinden, welche Tasten auf obersten Ebenen in $ configMain nicht in $ configCompare angezeigt werden (z. B. die API- Taste im obigen Beispiel).

Code implementieren

 <?php

function compareKeys($a, $b) {
    if ($a === $b) {
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$configMain = [
    'database' => [
        'host' => 'localhost',
        'port' => 3306
    ],
    'cache' => [
        'enabled' => true
    ],
    'api' => [
        'endpoint' => 'https://m66.net/api'
    ]
];

$configCompare = [
    'database' => [
        'host' => '127.0.0.1',
        'port' => 3306
    ],
    'cache' => [
        'enabled' => false
    ]
];

$diffKeys = array_diff_ukey($configMain, $configCompare, 'compareKeys');

print_r($diffKeys);

4. Ausgangsergebnis

 Array
(
    [api] => Array
        (
            [endpoint] => https://m66.net/api
        )
)

Wie Sie sehen können, findet Array_Diff_Ukey () erfolgreich die wichtigste Schlüssel- API auf $ configMain , jedoch nicht in $ configCompare .

5. Dinge zu beachten

  • Die Rückruffunktion muss eine Funktion sein , die zwei Schlüssel vergleicht . Die Rückgabewertregeln sind die gleichen wie strcmp () : weniger als 0, gleich 0 und größer als 0.

  • Diese Funktion verglichen keine Werte , nur Schlüssel.

  • Nur für Tasten auf höchstem Niveau gültig, wenn Sie verschachtelte Strukturen vergleichen möchten, verwenden Sie eine rekursive Logik, um übereinzustimmen.

6. Zusammenfassung

Die Verwendung von Array_Diff_Ukey () ist eine effiziente und präzise Möglichkeit, den Unterschiede zwischen den Schlüsselnamen zwischen zwei Arrays zu vergleichen, insbesondere für Szenarien in mehrdimensionalen Arrays, bei denen nur primäre strukturelle Unterschiede betroffen sind.

Unabhängig davon, ob es sich um Konfigurationsunterschiede, den Strukturvergleich oder die Durchführung von Berechtigungsüberprüfung handelt, können Sie die Verwendung dieser Funktion beherrschen, um sauberere und klarere PHP -Code zu schreiben.

Wenn Sie die Unterschiede zwischen Schlüsselwertpaaren weiter vergleichen möchten, können Sie in Betracht ziehen , array_diff_assoc () oder benutzerdefinierte rekursive Funktionsverarbeitung zu verwenden.