In PHP ist Array_Diff_key () eine Funktion zum Vergleich von zwei oder mehr Arrays. Es vergleicht die Schlüssel des Arrays, nicht den Wert. Diese Funktion gibt ein Array zurück, das im ersten Array enthalten ist, jedoch nicht in anderen Arrays.
Das Verständnis des Verhaltens von Array_Diff_key () ist besonders wichtig, wenn wir uns mit verschachtelten Arrays befassen, insbesondere wenn wir mit komplexen assoziativen Arrays zu tun haben.
Die grundlegende Syntax der Funktion array_diff_key () lautet wie folgt:
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 ist das erste Array, das verglichen wird.
$ array2, ... $ arrays sind andere Arrays, die mit dem ersten Array verglichen werden sollen.
Die Funktion gibt ein neues Array zurück, das Schlüsselwertpaare enthält, die in $ array1 vorhanden sind, aber in anderen Arrays nicht existieren.
Für gewöhnliche, nicht gesetzte Arrays vergleicht Array_Diff_key () die Schlüssel wie erwartet. Zum Beispiel:
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$result = array_diff_key($array1, $array2);
print_r($result);
Die Ausgabe wird sein:
Array
(
[a] => 1
[c] => 3
)
array_diff_key () gibt einen Schlüssel in $ array1 zurück, der nicht in $ array2 enthalten ist. Beachten Sie, dass der Vergleich hier nur auf dem Schlüsselnamen basiert, nicht auf dem Wert.
Die Dinge werden komplizierter, wenn wir verschachtelte Arrays in Array_Diff_key () übergeben. Betrachten Sie das folgende Beispiel für verschachtelte Arrays:
$array1 = [
'a' => ['name' => 'John', 'age' => 25],
'b' => ['name' => 'Jane', 'age' => 30],
'c' => ['name' => 'Tom', 'age' => 22]
];
$array2 = [
'b' => ['name' => 'Jane', 'age' => 30],
'd' => ['name' => 'Alex', 'age' => 28]
];
$result = array_diff_key($array1, $array2);
print_r($result);
Die Ausgabe wird sein:
Array
(
[a] => Array
(
[name] => John
[age] => 25
)
[c] => Array
(
[name] => Tom
[age] => 22
)
)
In diesem Beispiel vergleicht Array_diff_key () Schlüssel von äußeren Arrays ( A , B , C ) und prüft nur, ob der Schlüssel in einem anderen Array vorhanden ist. Wenn der Schlüssel B in $ array2 angezeigt wird, wird er von $ array1 ausgeschlossen. Die inneren verschachtelten Arrays hier (z. B. 'a' => ['Name' => 'John', 'Age' => 25] ) werden nicht getrennt verglichen. Wir können nur sagen, dass die Schlüssel A und C reserviert sind.
Es ist erwähnenswert, dass Array_diff_key () nicht rekursiv Schlüssel von verschachtelten Arrays vergleicht. Wenn Sie tiefere Arrayschlüssel wünschen, müssen Sie rekursive Funktionen verwenden oder manuell behandeln. Hier ist ein Beispiel für eine Rekursion:
function array_diff_key_recursive($array1, $array2) {
$result = array_diff_key($array1, $array2);
foreach ($result as $key => $value) {
if (is_array($value)) {
$result[$key] = array_diff_key_recursive($value, $array2);
}
}
return $result;
}
$array1 = [
'a' => ['name' => 'John', 'age' => 25, 'address' => ['city' => 'New York', 'zip' => '10001']],
'b' => ['name' => 'Jane', 'age' => 30],
'c' => ['name' => 'Tom', 'age' => 22]
];
$array2 = [
'b' => ['name' => 'Jane', 'age' => 30]
];
$result = array_diff_key_recursive($array1, $array2);
print_r($result);
Die Ausgabe wird sein:
Array
(
[a] => Array
(
[name] => John
[age] => 25
[address] => Array
(
[city] => New York
[zip] => 10001
)
)
[c] => Array
(
[name] => Tom
[age] => 22
)
)
In dieser rekursiven Implementierung führen wir auch einen rekursiven Array_Diff_key () -Vergleich von verschachtelten Arrays durch, um sicherzustellen, dass die internen Schlüssel auch korrekt verglichen werden können.
Array_Diff_key () wird hauptsächlich zum Vergleich von Schlüssel von Arrays und nicht zum Vergleich von Arrays verwendet.
Für verschachtelte Arrays vergleichen Array_Diff_key () nur äußere Schlüssel, und die inneren Arrays nehmen nicht am Vergleich teil.
Wenn Sie die Schlüssel von verschachtelten Arrays rekursiv vergleichen müssen, können Sie dies durch benutzerdefinierte rekursive Funktionen tun.
In der tatsächlichen Entwicklung ist das Verständnis des Verhaltens von Array_Diff_key () und seiner Anwendung in verschachtelten Arrays sehr wichtig für die Verarbeitung komplexer Datenstrukturen. Es hilft uns, Daten flexibel zu verarbeiten und bietet eine genaue Array -Struktur für weitere Vorgänge.