Dalam pangkalan data MySQL, anda boleh menyimpan data hierarki dalam jadual bernama kategori dengan lajur untuk category_id dan parent_id. Untuk mendapatkan semula data ini dalam struktur hierarki menggunakan PHP, ikuti langkah berikut:
Ambil Data daripada Pangkalan Data:
Gunakan pertanyaan SQL untuk ambil semua kategori yang disusun mengikut nama mereka:
<code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql);</code>
Buat Tatasusunan Rujukan:
Buat tatasusunan bersekutu $refs yang akan menyimpan rujukan kepada setiap kategori. Setiap rujukan akan mengandungi parent_id dan sifat nama. Untuk kategori tanpa induk (parent_id = 0), tambahkannya pada tatasusunan $list.
<code class="php">$refs = array(); $list = array(); foreach ($result as $row) { $ref = &$refs[$row['category_id']]; $ref['parent_id'] = $row['parent_id']; $ref['name'] = $row['name']; if ($row['parent_id'] == 0) { $list[$row['category_id']] = &$ref; } else { $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref; } }</code>
Jana Senarai HTML Bersarang:
Buat fungsi rekursif kepadaUL untuk menjana senarai HTML bersarang menggunakan tatasusunan $list. Ia sepatutnya menyemak kanak-kanak dan memanggil dirinya secara rekursif untuk membina subpokok.
<code class="php">function toUL(array $array) { $html = '<ul>' . PHP_EOL; foreach ($array as $value) { $html .= '<li>' . $value['name']; if (!empty($value['children'])) { $html .= toUL($value['children']); } $html .= '</li>' . PHP_EOL; } $html .= '</ul>' . PHP_EOL; return $html; }</code>
Paparkan Hierarki:
Gunakan fungsi toUL untuk menjana dan paparkan senarai HTML hierarki.
Anda boleh mendapatkan contoh berguna untuk mendapatkan senarai HTML bersarang daripada set rekod tatasusunan objek dalam bahagian "Soalan Berkaitan" yang disediakan dalam bahan rujukan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Hierarki daripada Pangkalan Data MySQL dalam PHP sebagai HTML Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!