背景:
从数据库数据构建树形菜单可以是共同任务。本文探讨了如何在不使用递归的情况下从 PHP 页面对象数组构造无序列表 (UL) 菜单树。
数据设置:
您的页面对象有以下属性:
功能概述:
我们将创建一个函数,它接受页面对象数组并生成相应的 HTML UL 树。
辅助函数:has_children()
此函数检查页面是否有子页面。
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id) return true; } return false; }</code>
递归 Build_Menu() 函数
build_menu() 函数迭代数组并生成 HTML UL 树。它使用变量 $parent 来跟踪当前父页面。
<code class="php">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>
输出:
将页面对象数组传递给 build_menu() 后函数,您可以回显生成的 HTML UL 树。输出将是代表数据库数据的嵌套 UL 菜单结构。
<code class="php">echo build_menu($menu);</code>
以上是如何在没有递归的情况下在 PHP/MySQL 中创建树形菜单?的详细内容。更多信息请关注PHP中文网其他相关文章!