Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menukar Susunan Rekod dengan Cekap menjadi Struktur Pokok Bersarang?

Bagaimana untuk Menukar Susunan Rekod dengan Cekap menjadi Struktur Pokok Bersarang?

Barbara Streisand
Lepaskan: 2024-11-29 12:55:11
asal
570 orang telah melayarinya

How to Efficiently Convert an Array of Records into a Nested Tree Structure?

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan