Angenommen, wir haben zwei mehrdimensionale Arrays, wir möchten diese beiden Arrays vergleichen und die Elemente zurückgeben, die im ersten Array erscheinen, aber im zweiten Array nicht existieren. Wir können rekursiv durch jede Schicht des Arrays iterieren und zum Vergleich Array_Diff_assoc () durchführen.
Hier ist der Beispielcode zur Implementierung von Array_Diff_assoc () rekursiv mit PHP:
<?php
/**
* Rekursiv mehrdimensionale Arrays implementieren array_diff_assoc() Funktion
*
* @param array $array1 Das erste Array
* @param array $array2 Das zweite Array
* @return array Gibt das Ergebnis der Differenz zwischen zwei Arrays zurück
*/
function recursive_array_diff_assoc($array1, $array2) {
$difference = array();
// 遍历Das erste Array
foreach ($array1 as $key => $value) {
// 如果Das zweite Array没有此键,Oder der Wert dieses Schlüssels ist anders
if (!array_key_exists($key, $array2)) {
// Wenn der Wert ein Array ist,Rekursiver Vergleich
$difference[$key] = is_array($value) ? recursive_array_diff_assoc($value, array()) : $value;
} else {
// Wenn der Wert ein Array ist,Rekursiver Vergleich
if (is_array($value) && is_array($array2[$key])) {
$recursive_diff = recursive_array_diff_assoc($value, $array2[$key]);
if (!empty($recursive_diff)) {
$difference[$key] = $recursive_diff;
}
} elseif ($value !== $array2[$key]) {
// Wenn der Wert unterschiedlich ist,Zu Differenz hinzufügen
$difference[$key] = $value;
}
}
}
return $difference;
}
// Beispielarray
$array1 = array(
'a' => 1,
'b' => array(
'x' => 2,
'y' => 3
),
'c' => 4
);
$array2 = array(
'a' => 1,
'b' => array(
'x' => 2,
'y' => 4
),
'c' => 5
);
// Aufrufen rekursiger Methoden
$result = recursive_array_diff_assoc($array1, $array2);
// Druckergebnisse
print_r($result);
?>
Reursive_array_diff_assoc () Funktion :
Diese Funktion erfordert zwei Arrays als Parameter: $ Array1 und $ Array2 .
Wir durchqueren jedes Schlüsselwertpaar im ersten Array von foreach .
Für jedes Element prüfen wir zunächst, ob der Schlüssel im zweiten Array enthalten ist, und fügen Sie das Element direkt zum Rückgabeergebnis hinzu.
Wenn das Element ein Array ist, vergleichen wir weiterhin mehrdimensionale Arrays mit recursive_array_diff_assoc () .
Schließlich werden alle verschiedenen Elemente zurückgegeben.
Rekursive Verarbeitung :
Bei der Begegnung auf ein Array-Element rufen wir dieselbe Funktion rekursiv auf, um sicherzustellen, dass jede Schicht in einem mehrdimensionalen Array verglichen wird.
Wenn das aufgetretene Element ein grundlegender Datentyp ist (z. B. Ganzzahlen, Zeichenfolgen usw.), vergleichen wir seine Werte direkt.
Ergebnisse Ausgabe :
Print_r ($ result) wird verwendet, um das Ergebnis auszugeben. Im Beispiel enthält die Ausgabe die Differenz zwischen den beiden, nachdem $ array1 und $ array2 verglichen wurden.
Array
(
[b] => Array
(
[y] => 3
)
[c] => 4
)
Im rekursiven Modus können wir die Funktion von Array_Diff_assoc () von mehrdimensionalen Arrays in PHP implementieren. Diese Methode stellt sicher, dass Unterschiede in den Schlüsselnamen und -werten auf jeder Ebene auch dann korrekt behandelt werden können, wenn sich im Array verschachtelte Subarrays befindet.