Penjanaan Pokok Hierarki daripada Hubungan Ibu Bapa-Anak
Cabaran:
Tukar koleksi nama-nama induk berpasangan ke dalam struktur pokok hierarki. Matlamatnya ialah untuk menjana senarai tidak tertib HTML bersarang (
Pendekatan Rekursif:
Penyelesaian menggunakan dua fungsi rekursif. Fungsi pertama, parseTree(), merentasi struktur pokok dan membina pokok hierarki. Ia mencari anak langsung dari akar yang ditentukan dan menambahkannya pada pokok yang terhasil, menghuraikan anak setiap kanak-kanak secara rekursif.
function parseTree($tree, $root = null) { $return = array(); foreach($tree as $child => $parent) { if($parent == $root) { unset($tree[$child]); $return[] = array( 'name' => $child, 'children' => parseTree($tree, $child) ); } } return empty($return) ? null : $return; }
Fungsi kedua, printTree(), melintasi pokok yang dijana oleh parseTree() dan mencetak HTML yang sepadan tidak tersusun senarai.
function printTree($tree) { if(!is_null($tree) && count($tree) > 0) { echo '<ul>'; foreach($tree as $node) { echo '<li>'.$node['name']; printTree($node['children']); echo '</li>'; } echo '</ul>'; } }
Penggunaan:
Untuk menukar pasangan nama-nama ibu bapa yang diberikan kepada struktur pepohon dan mencetak senarai tidak tertib HTML, anda akan memanggil fungsi ini sebagai berikut:
$result = parseTree($tree); printTree($result);
Digabungkan Fungsi:
Untuk kecekapan yang lebih baik, anda boleh menggabungkan kedua-dua fungsi menjadi satu fungsi:
function parseAndPrintTree($root, $tree) { $return = array(); if(!is_null($tree) && count($tree) > 0) { echo '<ul>'; foreach($tree as $child => $parent) { if($parent == $root) { unset($tree[$child]); echo '<li>'.$child; parseAndPrintTree($child, $tree); echo '</li>'; } } echo '</ul>'; } }
Fungsi gabungan ini memudahkan proses penghuraian dan pencetakan serta mengurangkan bilangan lelaran diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Pokok HTML Hierarki daripada Hubungan Ibu Bapa-Anak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!