Rumah > Artikel > pangkalan data > Bagaimanakah rekursi boleh digunakan untuk menjana pepohon menu bersarang daripada pangkalan data dengan kategori induk?
Rekursi untuk Penjanaan Pokok Menu
Dalam situasi anda, anda mempunyai struktur pangkalan data di mana kategori mempunyai medan 'root' yang menunjukkan kategori induknya . Output HTML yang anda inginkan melibatkan senarai bersarang yang mewakili hierarki kategori. Untuk mencapai matlamat ini, fungsi PHP rekursif boleh digunakan.
Berikut ialah contoh fungsi:
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $ret .= $this->recurse($categories, $category['id'], $level + 1); $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
Fungsi ini menganggap bahawa kategori akar mempunyai medan 'root' dengan nilai nol. Ia berulang melalui kategori, mengenal pasti kategori anak berdasarkan medan 'root' mereka dan membina HTML menggunakan senarai bersarang.
Untuk menggunakan fungsi ini:
Secara pilihan, anda boleh mengubah suai fungsi untuk mengelakkan senarai kosong dengan menyemak sama ada kategori mempunyai kategori anak sebelum membuat senarai:
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $sub = $this->recurse($categories, $category['id'], $level + 1); if ($sub != '<ul></ul>') { $ret .= $sub; } $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
Fungsi yang diubah suai ini hanya akan membuat senarai jika kategori mempunyai sekurang-kurangnya seorang anak.
Atas ialah kandungan terperinci Bagaimanakah rekursi boleh digunakan untuk menjana pepohon menu bersarang daripada pangkalan data dengan kategori induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!