Vergleich von Array-Strukturen mit einem rekursiven Diff-Algorithmus
Frage:
Wie können Sie generieren ein rekursiver Vergleich zweier Arrays, wobei übereinstimmende Elemente grün und nicht übereinstimmende Elemente markiert werden rot?
Antwort:
Um einen rekursiven Diff durchzuführen, der Arrays rekursiv vergleicht, können Sie eine benutzerdefinierte Funktion wie die in den Kommentaren des PHP array_diff beschriebene verwenden Funktion:
function arrayRecursiveDiff($aArray1, $aArray2) { $aReturn = array(); foreach ($aArray1 as $mKey => $mValue) { if (array_key_exists($mKey, $aArray2)) { if (is_array($mValue)) { $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]); if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; } } else { if ($mValue != $aArray2[$mKey]) { $aReturn[$mKey] = $mValue; } } } else { $aReturn[$mKey] = $mValue; } } return $aReturn; }
Diese Funktion durchläuft die Schlüssel und Werte des ersten Arrays und prüft, ob der Schlüssel vorhanden ist das zweite Array und führt den Vergleich basierend auf dem Datentyp durch. Wenn eine Struktur- oder Wertinkongruenz vorliegt, wird das Ergebnis dem $aReturn-Array hinzugefügt.
Vorteile von rekursivem Diff:
Überlegungen zur Implementierung:
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen rekursiven Diff für Array-Strukturen mit farbcodierten Unterschieden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!