In PHP wird die Funktion array_diff_key () verwendet, um zwei oder mehr Arrays zu vergleichen, wobei Teile des ersten Arrays zurückgegeben werden, die sich von anderen Array -Tasten unterscheiden. Es wird in der folgenden Form verwendet:
array_diff_key(array $array1, array $array2, array ...$arrays): array
Das von dieser Funktion zurückgegebene Ergebnis ist: Alle Schlüssel im ersten Array erscheinen nicht in anderen Arrays . Das heißt, es wird im Ergebnis nur angezeigt, wenn in anderen Arrays ein Schlüssel nicht vorhanden ist.
Wenn jedoch ein leeres Array übergeben wird, verursacht das Verhalten der Funktion einige besondere Phänomene. Lassen Sie uns diskutieren, welche Art von Rückgabewert array_diff_key () beim Übergeben eines leeren Arrays haben wird.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
Wenn das zweite Array $ Array2 ein leeres Array ist, gibt Array_Diff_key () alle Schlüsselwertepaare des ersten Array $ $ array1 direkt zurück. Die Gründe sind wie folgt:
Das Prinzip von array_diff_key () besteht darin, ein Array auf der Grundlage der Differenz der Schlüssel zurückzugeben.
Wenn das zweite Array leer ist, gibt es keine Schlüssel zum Vergleich mit den Schlüssel im ersten Array. Daher werden alle Schlüssel im ersten Array im zweiten Array nicht gefunden.
Also gibt Array_Diff_key () alle Schlüsselwertpaare des ersten Arrays zurück, da sie "anders als alles andere" sind.
Aus diesem Beispiel können wir sehen, dass Array_Diff_key (), wenn das zweite Array leer ist, keine Vergleiche herstellt und das erste Array direkt zurückgibt.
Wenn mehrere Arrays übergeben werden, gibt es leere Arrays, das Verhalten von array_diff_key () besteht immer noch darin, Tasten im ersten Array zurückzugeben, das nicht in den anderen Arrays liegt. Zum Beispiel:
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$array3 = ["a" => 100];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
Ausführungsergebnisse:
Array
(
[b] => 2
[c] => 3
)
In diesem Beispiel existiert der Schlüssel "A" im ersten Array $ Array1 im dritten Array $ Array3 , sodass "a" im Rückgabeergebnis nicht angezeigt wird. Und "B" und "C" sind nicht in $ array3 zu finden, daher werden sie erhalten.
Wenn ein leeres Array an array_diff_key () übergeben wird, werden alle Elemente des ersten Arrays zurückgegeben.
Ein leeres Array hat im Vergleich zu anderen Arrays keine Schlüssel, daher wird berücksichtigt, dass nicht alle Schlüssel in anderen Arrays erscheinen.
Wenn mehrere Arrays übergeben werden und es leere Arrays gibt, gibt das Verhalten von Array_Diff_key () das Ergebnis weiterhin basierend auf dem tatsächlichen Vergleichsarray zurück.