In PHP wird die Funktion array_diff_key () verwendet, um zwei oder mehr Arrays zu vergleichen und ein Array zurückzugeben, das Schlüsselnamen enthält, die im ersten Array vorhanden sind, jedoch nicht in anderen Arrays. Wie funktioniert die Funktion, wenn die Schlüsselnamen wiederholt werden? Schauen wir uns die spezifische Situation an.
Die grundlegende Syntax der Funktion array_diff_key () lautet wie folgt:
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : Das erste Array, das verglichen wird.
$ Array2, ... $ Arrays : Andere Arrays, die mit dem ersten Array verglichen werden müssen.
Diese Funktion gibt ein Array zurück, das die im ersten Array $ Array1 vorhandenen Schlüsselnamen enthält, während Elemente dieser Schlüsselnamen im nachfolgenden Array $ Array2 , ... $ arrays nicht gefunden werden können.
Das Verhalten von array_diff_key () kann überraschend sein, wenn es im Array doppelte Schlüssel gibt. Array-Tasten in PHP sind einzigartig, und selbst wenn Sie denselben Schlüssel zu einem Array angeben, bleibt am Ende nur das letzte Schlüsselwertpaar erhalten.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3,
"a" => 4 // Tasten wiederholen
];
$array2 = [
"a" => 100,
"b" => 200
];
$result = array_diff_key($array1, $array2);
print_r($result);
In diesem Beispiel wird der $ Array1 Middle Key "A" zweimal definiert, beginnend mit 1 und dann durch 4 überschrieben. Also hat $ array1 tatsächlich nur einen Schlüssel "a" => 4 .
Nach dem Ausführen des obigen Codes ist die Ausgabe:
Array
(
[c] => 3
)
array_diff_key () vergleichen Array $ array1 und $ array2 und gibt das Element zurück, das dem Schlüsselnamen "C" entspricht, da es in $ array2 keine "C" -Taste gibt.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3,
"a" => 4 // Tasten wiederholen
];
$array2 = [
"a" => 100,
"b" => 200
];
$array3 = [
"c" => 300,
"d" => 400
];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
In diesem Beispiel wird der Schlüssel "A" in $ array1 wiederholt als 1 und 4 definiert, aber schließlich als 4 beibehalten. Die Funktion wird Array1 , Array2 und Array3 vergleichen und Elemente zurückgeben, die dem Schlüsselnamen "D" entsprechen, da "D" in $ array1 und nicht in anderen Arrays eindeutig ist.
Das Ausgabeergebnis ist wie folgt:
Array
(
[d] => 400
)
Auswirkungen von Duplikatschlüssel : Wenn im Array doppelte Schlüssel vorhanden ist, überschreibt PHP die vorherigen Schlüsselwertpaare automatisch, sodass nur das letzte Schlüsselwertpaar. Daher wird array_diff_key () mit dem endgültigen Schlüsselnamen verglichen und ignoriert den Wert der Zwischen Duplikate.
Einzigartigkeit der Schlüsselnamen : Array_Diff_key () basiert auf der Einzigartigkeit von Schlüsselnamen zum Vergleich. Wenn in mehreren Arrays ein Schlüssel im Array vorhanden ist, basiert der endgültige reservierte Schlüssel auf dem Wert des Schlüssels im letzten Auftreten des Arrays.
Bei der Verwendung der Funktion array_diff_key () werden die doppelten Schlüssel im Array automatisch dedupliziert und nur das letzte Schlüsselwertpaar ist gültig. Wenn Sie mehrere Duplikatschlüssel aufbewahren müssen, sollten Sie andere Methoden verwenden, z. B. das assoziative Array von Schlüsselwertpaaren als Werte.
Hoffentlich hilft Ihnen dieser Artikel, das Verhalten der Funktion array_diff_key () besser zu verstehen, insbesondere wenn Sie sich mit wiederholten Schlüssel in einem Array befassen.
Bitte beachten Sie, dass das Code -Beispiel im Artikel keine spezifischen URLs umfasst. Wenn jedoch eine ähnliche URL -Verwendung in den tatsächlichen Entwicklungsprozess beteiligt ist, können Sie den Domänennamen in der URL beispielsweise durch M66.net ersetzen: