Cara Menukar Susunan Rekod kepada Struktur Pokok dengan Cekap
Dalam senario ini, anda mempunyai susunan rekod yang mewakili struktur hierarki . Setiap rekod mempunyai ID, ID ibu bapa dan nama. Objektifnya adalah untuk mengubah tatasusunan ini menjadi struktur pokok bersarang, di mana nod akar mempunyai nod anak, yang seterusnya mungkin mempunyai nod anak mereka sendiri.
Untuk mencapainya, fungsi rekursif bernama createTree digunakan. Fungsi ini mengambil dua parameter: rujukan kepada tatasusunan rekod dan tatasusunan induk. Ia berulang melalui tatasusunan induk dan bagi setiap induk, ia menyemak sama ada terdapat sebarang rekod anak dalam tatasusunan rekod. Jika rekod anak wujud, ia memanggil fungsi createTree secara rekursif untuk memprosesnya dan memberikan hasilnya kepada harta anak induk.
Berikut ialah contoh:
$arr = array( array('id' => 100, 'parentid' => 0, 'name' => 'a'), array('id' => 101, 'parentid' => 100, 'name' => 'a'), array('id' => 102, 'parentid' => 101, 'name' => 'a'), array('id' => 103, 'parentid' => 101, 'name' => 'a'), ); $new = array(); foreach ($arr as $a){ $new[$a['parentid']][] = $a; } $tree = createTree($new, array($arr[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k =>$l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
Kod ini akan keluarkan struktur pokok yang dikehendaki. Fungsi createTree menukar rekod induk kepada anak secara rekursif, mencipta perwakilan pepohon hierarki data. Ambil perhatian bahawa fungsi ini beroperasi pada rujukan kepada tatasusunan input, membenarkan perubahan disebarkan kembali kepada tatasusunan asal.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Susunan Rekod dengan Cekap menjadi Struktur Pokok Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!