PHP/MySQL Senarai Tidak Tertib Pembinaan Pokok: Pendekatan Pertanyaan Pangkalan Data Tunggal Bukan Rekursif
Membina pepohon menu senarai tidak tersusun daripada pertanyaan pangkalan data adalah tugas biasa. Biasanya, fungsi rekursif yang menanyakan pangkalan data beberapa kali digunakan. Walau bagaimanapun, pendekatan bukan rekursif yang lebih cekap boleh dilakukan menggunakan pertanyaan pangkalan data tunggal.
Memandangkan tatasusunan objek halaman dengan id, tajuk dan atribut parent_id, matlamatnya adalah untuk mencipta fungsi yang menjana HTML untuk menu senarai yang tidak tersusun.
Penyelesaian:
Penyelesaian kami menggunakan langkah berikut:
Kod:
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id){ return true; } } return false; } function build_menu($rows, $parent=0) { $result = "<ul>"; foreach ($rows as $row) { if ($row['parent_id'] == $parent){ $result.= "<li>{$row['title']}"; if (has_children($rows,$row['id'])) { $result.= build_menu($rows,$row['id']); } $result.= "</li>"; } } $result.= "</ul>"; return $result; }</code>
Contoh Penggunaan:
<code class="php">$menu = [ ['id' => 1, 'title' => 'Menu 1', 'parent_id' => null], ... // Additional menu objects ]; echo build_menu($menu); // Outputs the complete menu list</code>
Kelebihan:
Atas ialah kandungan terperinci Bagaimana untuk Membina Pokok Menu Senarai Tidak Tertib dalam PHP/MySQL Tanpa Rekursi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!