In PHP sind Array-Operationen sehr häufige Aufgaben, und es gibt viele integrierte Funktionen, die uns helfen, Arrays effizient zu verarbeiten. array_diff_key () ist eine sehr praktische Funktion, die uns hilft, Arrays basierend auf Schlüsselnamen und Rückgabe von Unterschieden zurückzugeben. Oft haben Entwickler einige Missverständnisse über diese Funktion und glauben, dass sie die Werte vergleichen wird, die den Schlüsselnamen entsprechen, aber tatsächlich nur das Array vergleichen wird, und. Heute werden wir die Verwendung dieser Funktion im Detail analysieren und einige häufige Missverständnisse klären.
Die Funktion array_diff_key () wird verwendet, um zwei (oder mehr) Arrays zu vergleichen und gibt ein Element zurück, das die Schlüsselnamen im ersten Array enthält, die nicht in anderen Arrays angezeigt werden. Das heißt, es gibt einen Differenzsatz zurück, der Schlüsselnamen enthält, die im ersten Array vorhanden sind, jedoch nicht in den anderen Arrays.
Der Funktionsprototyp lautet wie folgt:
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : Das erste Array, das verglichen wird.
$ array2, ... $ arrays : Ein Array, das mit $ Array1 verglichen werden muss (mehrere Arrays können übergeben werden).
Um diese Funktion klarer zu verstehen, schauen wir uns ein aktuelles Code -Beispiel an:
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
Das Ausgangsergebnis ist:
Array
(
[a] => 1
)
In diesem Beispiel vergleicht die Funktion array_diff_key () die Schlüsselnamen in $ array1 und $ array2 . Es gibt ein neues Array zurück, das den Schlüsselnamen 'a' enthält, weil 'a' keinen entsprechenden Schlüssel in $ array2 hat.
Ein wichtiges Merkmal der Funktion array_diff_key () ist, dass sie nur die Schlüsselnamen vergleicht , aber die entsprechenden Werte der Schlüsselnamen nicht berücksichtigt. Im obigen Beispiel sehen wir, dass die Schlüsselnamen 'B' und 'C' in beiden Arrays erscheinen, aber ihre Werte sind unterschiedlich: Der Wert, der 'B' in $ array1 entspricht, beträgt 2 und der Wert, der 'B' in $ array2 entspricht, beträgt 5 . Array_diff_key () verglichen jedoch keine Werte, sondern vergleicht nur Schlüsselnamen, sodass weder 'B " noch ' C ' im Rückgabeergebnis angezeigt werden.
array_diff_key () kann auch mehrere Arrays als Parameter akzeptieren, um Schlüsselnamen in mehreren Arrays zu vergleichen. Hier ist ein Beispiel mit mehreren Arrays:
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$array3 = [
'c' => 3,
'd' => 7,
'e' => 8
];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
?>
Das Ausgangsergebnis ist:
Array
(
[a] => 1
)
Hier vergleicht Array_diff_key () die Schlüsselnamen von $ array1 und $ array2 und $ array3 . Das zurückgegebene Ergebnis ist immer noch nur der Schlüsselname 'A' , da 'B' und 'C' beide die entsprechenden Schlüsselnamen in anderen Arrays finden.
Vergleiche nur Schlüsselnamen : Wie bereits erwähnt, vergleichen Array_Diff_key () nur Schlüsseldamen und vergleichen die Schlüsselwerte nicht.
Mehrfacharray -Vergleich : Sie können mehrere Arrays übergeben. Array_Diff_Key () gibt den eindeutigen Schlüsselnamen im ersten Array basierend auf den Schlüsselnamen in allen Arrays zurück.
Das ursprüngliche Array bleibt unverändert : Diese Funktion ändert nicht das ursprüngliche Array, sondern gibt ein neues Array zurück.
Manchmal glauben Entwickler fälschlicherweise, dass Array_diff_key () die Schlüsselwerte eines Arrays vergleichen wird. Zum Beispiel der folgende Code:
<?php
$array1 = [
'a' => 10,
'b' => 20,
'c' => 30
];
$array2 = [
'a' => 10,
'b' => 25,
'c' => 30
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
Ausgangsergebnis:
Array
(
)
Obwohl die Werte von Key 'B' in Arrays $ Array1 und $ array2 unterschiedlich ( 20 bzw. 25 ) sind, gibt Array_Diff_key () ein leeres Array zurück, da es nur die Schlüsselnamen vergleicht und die Schlüsselnamen 'A' und 'C' in beiden Arrays sind, sodass sie nicht zurückgegeben werden.
array_diff_key () ist eine sehr nützliche PHP -Funktion, die uns hilft, Schlüsselnamen von Arrays leicht zu vergleichen, um diejenigen zu finden, die im ersten Array existieren, aber nicht in anderen Arrays. Denken Sie daran, dass es nur Schlüssebamen vergleicht, nicht die Schlüsselwerte . Diese Funktion ist besonders nützlich, wenn Sie sich mit mehrdimensionalen Arrays befassen oder wenn Sie Daten nur nach dem Schlüsselnamen filtern müssen.