In PHP sind Array_Diff_Ukey () und Array_Diff_key () Funktionen, mit denen Schlüsselnamen von Arrays verglichen und Differenzen der Schlüsselnamen zurückgegeben werden können. Obwohl die Funktionen dieser beiden Funktionen sehr ähnlich sind, gibt es einige signifikante Unterschiede in der Art und Weise, wie sie verwendet werden. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen im Detail erläutert und deren Anwendung in der tatsächlichen Entwicklung angezeigt.
Die Funktion array_diff_key () wird verwendet, um die Schlüsselnamen von zwei oder mehr Arrays zu vergleichen und gibt den Schlüsselnamen und den Schlüsselwertpaare zurück, die im ersten Array vorhanden sind, jedoch nicht in anderen Arrays. Das heißt, es gibt alle Elemente zurück, deren Schlüsselnamen in anderen Arrays nicht vorhanden sind.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'd' => 6
];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[c] => 3
)
In diesem Beispiel gibt die Funktion array_diff_key () ein Schlüsselwertpaar zurück, das im Array $ array1 vorhanden ist, aber in $ array2 nicht existiert.
Die Funktion array_diff_ukey () ähnelt Array_diff_key () , ermöglicht dem Benutzer jedoch eine Rückruffunktion, um Schlüsselnamen zu vergleichen. Dies bietet Benutzern mehr Flexibilität, insbesondere wenn die Vergleichsregeln für benutzerdefinierte Schlüsselname erforderlich sind.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'A' => 5,
'B' => 6
];
// Vergleichsfunktion des benutzerdefinierten Schlüsselnamens
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
[c] => 3
)
In diesem Beispiel vergleicht Array_Diff_Ukey () Schlüsselnamen basierend auf einer benutzerdefinierten Rückruffunktion. Die Rückruffunktion verwendet Strtolower , um den Schlüsselnamen mit Kleinbuchstaben zu vergleichen, und das Ergebnis gibt nur das Element des Schlüsselnamens C zurück, da es in $ Array2 nicht denselben Kleinbuchstaben -Schlüsselnamen enthält.
Vergleichsmethode für Schlüsselname:
Array_diff_key () verwendet direkt die Standardvergleichsmethode von PHP, um die Schlüsselnamen des Arrays zu vergleichen.
Mit Array_Diff_Ukey () können Benutzer die Vergleichsregeln für Schlüsselnamen anpassen und durch Bestehen einer Rückruffunktion benutzerdefinierte Vergleiche des Schlüsselnamens implementieren.
Flexibilität:
Array_Diff_key () erlaubt keine benutzerdefinierten Vergleichsregeln für den Schlüsselschlüssel, deren Vergleich basiert auf dem Standardgleichheitsvergleich von PHP.
array_diff_ukey () ist flexibler und Sie können eine benutzerdefinierte Vergleichsmethode für einen benutzerdefinierten Schlüssellennamen über eine Rückruffunktion definieren.
Anwendungsszenarien:
array_diff_key () ist für Fälle geeignet, in denen Schlüsselnamen direkt gleich sind.
Array_Diff_Ukey () eignet sich für Situationen, in denen Schlüsselnamen benutzerdefinierte Vergleichsregeln erfordern, z.
In der tatsächlichen Entwicklung wird array_diff_key () häufiger verwendet, da es einfach zu verwenden ist und für die meisten häufigsten Array -Vergleichsszenarien geeignet ist. Array_Diff_Ukey () eignet sich für besondere Bedürfnisse, z. B. für die Ignorierung des Falls von Schlüsselnamen oder die Durchführung anderer benutzerdefinierter Vergleichsvorgänge.
Angenommen, Sie haben zwei Arrays, deren Schlüsselnamen tatsächlich gleich sind, aber ein Array hat den Großbuchstaben und das andere ist ein Kleinbuchstaben. In diesem Fall können Sie Array_Diff_Ukey () verwenden, um ihre Schlüsselnamen zu vergleichen und den Fall zu ignorieren.
$array1 = [
'apple' => 1,
'banana' => 2
];
$array2 = [
'APPLE' => 3,
'BANANA' => 4
];
// Fallvergleich ignorieren
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
)
In diesem Beispiel gibt das Ergebnis ein leeres Array zurück, da die Schlüsselnamen Apple und Apple als gleich betrachtet werden, was darauf hinweist, dass es keinen Unterschied in den Schlüsselnamen der beiden Arrays gibt.
array_diff_key () ist eine einfache und direkte Möglichkeit, Arrayschlüsselnamen zu vergleichen, die für reguläre Differenzen des Schlüsselnamens geeignet sind.
Array_Diff_Ukey () bietet mehr Flexibilität und ermöglicht die Vergleichsregeln für benutzerdefinierte Schlüsselnamen, die für Szenarien geeignet sind, in denen eine spezielle Vergleichslogik erforderlich ist.
Welche Funktion zu wählen ist, hängt von Ihren Bedürfnissen ab. Wenn Sie nur die direkte Gleichheit der Schlüsselnamen vergleichen müssen, reicht Array_Diff_key () aus. Wenn Sie komplexere Vergleichsregeln benötigen, ist Array_Diff_Ukey () eine bessere Wahl.