PHP 和MySQL 中的類別層次結構
在典型的資料庫結構中,類別以分層方式組織,父類別包含子類別。從 MySQL 資料庫檢索此層次結構可能是一項具有挑戰性的任務。本文探討如何使用 PHP 和 MySQL 有效建構類別層次結構。
鄰接清單模型
鄰接清單模型透過將父子關係儲存在桌子中。表中的每一行都包含類別的 ID 及其父類別的 ID。此模型允許使用單一 SQL 查詢高效檢索類別樹。
產生層次結構
要產生類別層次結構,我們使用下列PHP 程式碼:
<code class="php">$refs = array(); $list = array(); $sql = "SELECT item_id, parent_id, name FROM items ORDER BY name"; $result = $pdo->query($sql); foreach ($result as $row) { $ref = &$refs[$row['item_id']]; $ref['parent_id'] = $row['parent_id']; $ref['name'] = $row['name']; if ($row['parent_id'] == 0) { $list[$row['item_id']] = &$ref; } else { $refs[$row['parent_id']]['children'][$row['item_id']] = &$ref; } }</code>
此程式碼迭代結果集,建立對數組中每個類別的引用。它使用父子關係來建構表示層次結構的多維數組。
建立輸出清單
為了顯示層次結構,我們使用遞迴函數:
<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>
此函數採用多維數組並產生表示類別層次結構的HTML 無序列表。它遞歸地遍歷層次結構,根據需要建立嵌套列表。
以上是如何在 PHP 和 MySQL 中建構類別層次結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!