Hierarki Kategori dalam PHP/MySQL
Dalam PHP/MySQL, sangat cekap untuk menyimpan kategori dan subkategori dalam struktur hierarki menggunakan model senarai bersebelahan. Untuk mendapatkan semula data hierarki ini dengan berkesan, kami boleh menggunakan pendekatan yang memerlukan hanya satu pas pangkalan data.
Algoritma Pendapatan Data Satu Laluan
Mari kita buat tatasusunan $refs dan tatasusunan $list, sama dengan apa yang telah dibentangkan dalam jawapan yang disediakan.
<code class="php">$refs = []; $list = []; $sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql); 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>
Algoritma ini membina struktur data hierarki dengan cekap. Tatasusunan $refs memegang rujukan kepada semua kategori dan tatasusunan $list mengandungi rujukan kepada kategori peringkat teratas (yang tiada induk).
Penjanaan Senarai Rekursif
Untuk mengeluarkan struktur hierarki sebagai senarai HTML, fungsi rekursif seperti berikut boleh digunakan:
<code class="php">function toUL(array $array) { $html = '<ul>'; foreach ($array as $value) { $html .= '<li>' . $value['name']; if (!empty($value['children'])) { $html .= toUL($value['children']); } $html .= '</li>'; } $html .= '</ul>'; return $html; }</code>
Fungsi ini membina senarai HTML secara rekursif, dengan cekap mewakili data hierarki yang diperoleh daripada pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Kategori Hierarki dalam PHP/MySQL dengan Hanya Satu Pas Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!