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.
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.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ Array1 : Das erste Array (Referenzarray).
$ Array2, ... $ Arrays : Das Array, das mit dem ersten Array verglichen werden soll.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 4,
"c" => 5
];
$result = array_diff_key($array1, $array2);
print_r($result);
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.
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.
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
$ Array1 : Das erste Array (Referenzarray).
$ Array2, ... $ Arrays : Das Array, das mit dem ersten Array verglichen werden soll.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 4,
"c" => 3
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
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.
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.
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.
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);
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.