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中文网其他相关文章!