Perbandingan Rekursif Tatasusunan
Apabila membandingkan dua tatasusunan, selalunya berguna untuk melakukan pembezaan rekursif yang meneroka struktur bersarang dan mengenal pasti percanggahan pada setiap peringkat. Ini boleh menjadi sangat berharga untuk menguji output algoritma baharu atau memastikan data kekal konsisten.
Fungsi Sedia Ada
Nasib baik, terdapat fungsi sedia yang dipanggil arrayRecursiveDiff () yang menyediakan perbandingan tatasusunan rekursif. Ia dilaksanakan dalam ulasan fungsi array_diff() PHP dan boleh digunakan seperti berikut:
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 mengambil dua tatasusunan sebagai argumen dan mengembalikan tatasusunan yang mengandungi perbezaan antaranya. Elemen padanan dilambangkan dengan hijau, manakala bahagian yang tidak sepadan diserlahkan dengan warna merah.
Penggunaan
Untuk menggunakan fungsi arrayRecursiveDiff() untuk visualisasi, anda boleh lulus hasil kepada alat seperti dBug atau cipta antara muka pelaporan tersuai anda sendiri.
Pendekatan Alternatif
Jika anda lebih suka pendekatan yang berbeza, anda boleh membina fungsi diff rekursif anda sendiri atau terokai perpustakaan PHP lain yang menyediakan fungsi perbandingan tatasusunan. Walau bagaimanapun, fungsi arrayRecursiveDiff() menawarkan kaedah yang mudah dan cekap untuk membandingkan tatasusunan bersarang dalam.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari perbezaan antara tatasusunan bersarang dalam dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!