Aktueller Standort: Startseite> Neueste Artikel> Wie unterscheidet sich array_diff_key () von array_diff_assoc ()?

Wie unterscheidet sich array_diff_key () von array_diff_assoc ()?

M66 2025-06-06

In PHP sind Array_Diff_key () und Array_Diff_assoc () beide Funktionen zum Vergleich von Arrays, aber ihre Vergleichsmethoden unterscheiden sich offensichtlich von diesen anwendbaren Szenarien. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen im Detail erläutert und ihre jeweiligen Nutzungsszenarien erörtert.

1. Array_diff_key () Funktion

Array_diff_key () wird verwendet, um die Schlüsselnamen (Schlüssel) von zwei oder mehr Arrays zu vergleichen und die im ersten Array vorhandenen Schlüsselwertpaare zurückzugeben, aber nicht in anderen Arrays.

Grammatik

 array_diff_key(array $array1, array $array2, array ...$arrays): array

Parameterbeschreibung

  • $ Array1 : Das erste Array (Referenzarray).

  • $ Array2, ... $ Arrays : Das Array, das mit dem ersten Array verglichen werden soll.

Beispiel

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 5
];

$result = array_diff_key($array1, $array2);
print_r($result);

Ausgangsergebnis

 Array
(
    [b] => 2
)

In diesem Beispiel vergleicht Array_diff_key () die Schlüsselnamen von zwei Arrays. Die zurückgegebenen Ergebnisse sind jene Schlüsselwertpaare, die in $ Array1, jedoch nicht in $ array2 enthalten sind.

2. ARRAY_DIFF_ASSOC () -Funktion

Array_diff_assoc () wird verwendet, um Schlüsselnamen und -Werte (Schlüssel und Wert) von zwei oder mehr Arrays zu vergleichen, wodurch Schlüsselwertpaare zurückgegeben werden, die im ersten Array vorhanden sind, jedoch nicht in anderen Arrays. Im Gegensatz zu Array_Diff_Key () vergleicht es nicht nur die Schlüsselnamen, sondern auch die Werte, die den Tasten entsprechen.

Grammatik

 array_diff_assoc(array $array1, array $array2, array ...$arrays): array

Parameterbeschreibung

  • $ Array1 : Das erste Array (Referenzarray).

  • $ Array2, ... $ Arrays : Das Array, das mit dem ersten Array verglichen werden soll.

Beispiel

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 3
];

$result = array_diff_assoc($array1, $array2);
print_r($result);

Ausgangsergebnis

 Array
(
    [a] => 1
    [b] => 2
)

In diesem Beispiel vergleicht Array_diff_assoc () die Schlüsselnamen und Werte von $ array1 und $ array2 . Die zurückgegebenen Ergebnisse sind jene Schlüsselwertpaare, die in $ array1 enthalten sind, aber nicht den gleichen Schlüsselnamen und den gleichen Wert in $ array2 haben.

3. Differenz zwischen Array_Diff_key () und Array_Diff_assoc ()

Schlüsselname gegen Schlüsselwert

  • Array_diff_key () vergleicht nur die Schlüsselnamen und ignoriert die entsprechenden Werte des Schlüssels.

  • array_diff_assoc () vergleicht die Schlüsselnamen und -werte gleichzeitig. Nur wenn die Schlüsselnamen und -Werte unterschiedlich sind, wird sie als unterschiedlich angesehen.

Szenarien verwenden

  • Array_Diff_key () eignet sich für Szenarien, in denen Sie sich nur um die Schlüsselnamen des Arrays kümmern, jedoch nicht für die entsprechenden Werte. Sie möchten beispielsweise bestimmte Schlüssel entfernen oder die Struktur von zwei Arrays vergleichen.

  • array_diff_assoc () eignet sich für gemeinsame Szenarien, wenn Sie Schlüssel und Werte in einem Array vollständig vergleichen müssen, z. B. das Filtern von Elementen mit unterschiedlichen Schlüsselnamen und Werten in zwei Arrays.

Beispiel: URL -Ersatz

Angenommen, wir haben ein Array, das verschiedene URLs enthält und ersetzt werden muss. Wir können array_diff_key () oder array_diff_assoc () verwenden, um den Ersatz zu implementieren, je nachdem, ob wir basierend auf dem Schlüssel- oder Schlüsselwert vergleichen müssen.

 $urls = [
    "home" => "http://m66.net/home",
    "about" => "http://example.com/about",
    "contact" => "http://m66.net/contact"
];

$other_urls = [
    "home" => "http://m66.net/home",
    "about" => "http://m66.net/about",
];

$result = array_diff_key($urls, $other_urls);
print_r($result);

Ausgangsergebnis

 Array
(
    [contact] => http://m66.net/contact
)

In diesem Beispiel vergleichen wir nur basierend auf dem Schlüsselnamen und finden schließlich die Elemente, die in $ URLs , jedoch nicht in $ other_urls enthalten sind.

Das obige ist der Unterschied zwischen array_diff_key () und array_diff_assoc () . Nach Ihren Anforderungen kann die Auswahl der richtigen Funktion für Array -Unterschiede die Effizienz und Lesbarkeit des Codes effektiv verbessern.