如何在没有递归的情况下在 PHP/MySQL 中创建树形菜单?

Mary-Kate Olsen
发布: 2024-10-27 20:45:02
原创
894 人浏览过

How to Create a Tree Menu in PHP/MySQL Without Recursion?

PHP / MySQL 无需递归构建树形菜单

背景:

从数据库数据构建树形菜单可以是共同任务。本文探讨了如何在不使用递归的情况下从 PHP 页面对象数组构造无序列表 (UL) 菜单树。

数据设置:

您的页面对象有以下属性:

  • id
  • title
  • parent_id(根页面设置为 null)

功能概述:

我们将创建一个函数,它接受页面对象数组并生成相应的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!