PHP/MySQL 無序列表選單樹建構:非遞迴單一資料庫查詢方法
從資料庫查詢一項共同的任務。通常,使用多次查詢資料庫的遞歸函數。然而,使用單一資料庫查詢可以使用更有效的非遞歸方法。
給定一個具有 id、title 和parent_id 屬性的頁面物件數組,目標是建立一個函數來產生 HTML無序列表選單。
解決方案:
我們的解決方案採用以下步驟:
代碼:
<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>
用法示例:
<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>
優點:
以上是如何在 PHP/MySQL 中不使用遞歸來建立無序列表選單樹?的詳細內容。更多資訊請關注PHP中文網其他相關文章!