Membandingkan Struktur Tatasusunan menggunakan Algoritma Beza Rekursif
Soalan:
Bagaimana anda boleh menjana perbezaan rekursif dua tatasusunan, di mana elemen padanan ditandakan dengan unsur hijau dan tidak padan ditanda merah?
Jawapan:
Untuk melakukan pembezaan rekursif, yang membandingkan tatasusunan secara rekursif, anda boleh menggunakan fungsi tersuai seperti yang diterangkan dalam ulasan Fungsi array_diff PHP:
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; }
Fungsi ini berulang melalui kekunci dan nilai tatasusunan pertama, semak jika kunci wujud dalam tatasusunan kedua, dan mengendalikan perbandingan berdasarkan jenis data. Jika terdapat ketidakpadanan struktur atau nilai, hasilnya akan ditambahkan pada tatasusunan $aReturn.
Faedah Rekursif Diff:
Pertimbangan Pelaksanaan:
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Perbezaan Rekursif untuk Struktur Tatasusunan dengan Perbezaan Berkod Warna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!