首页  >  文章  >  数据库  >  如何在 PHP 中使用递归函数创建 Echo 菜单树?

如何在 PHP 中使用递归函数创建 Echo 菜单树?

Susan Sarandon
Susan Sarandon原创
2024-10-27 06:58:29896浏览

 How to Create an Echo Menu Tree Using a Recursive Function in PHP?

使用递归函数回显菜单树

问题概述

创建一个递归函数来遍历存储在数据库中的分层菜单结构并将其输出HTML 可能具有挑战性。给定一个包含类别及其父类别的表格,任务是生成一个直观地表示层次结构的菜单树。

递归函数方法

为了解决这个问题,需要一个递归函数。这个想法是从根类别开始,找到它的子类别,然后递归地调用每个子类别的函数,从而构建 HTML 输出。

PHP 函数实现

这里是PHP 函数的可能实现:

<code class="php">function recurse($categories, $parent = null, $level = 0)
{
    $ret = '<ul>';
    foreach($categories as $index => $category)
    {
        if($category['root'] == $parent)
        {
            $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
            $ret .= $this->recurse($categories, $category['id'], $level+1);
            $ret .= '</li>';
        }
    }
    return $ret . '</ul>';
}</code>
  1. 它需要三个参数:$categories(类别数据数组)、$parent(当前父类别 ID)和 $level(决定缩进级别)。
  2. 它迭代类别并检查它们的根是否与提供的父 ID 匹配。
  3. 如果匹配,则输出类别名称,用 li 包装以及一个具有适当 Tier 类用于缩进的元素。
  4. 然后它会使用下一级类别递归调用自身,设置新的父 ID 并递增级别。

用法

使用该函数:

  1. 查询数据库以检索所有类别。
  2. 以类别数据作为第一个参数调用 recurse()。
  3. 回显返回的 HTML 输出。

处理空子类别

初始实现可能会产生空的

    。没有子项的类别的元素。为了防止这种情况,您可以像这样修改该函数:
<code class="php">function recurse($categories, $parent = null, $level = 0)
{
    $ret = '<ul>';
    foreach($categories as $index => $category)
    {
        if($category['root'] == $parent)
        {
            $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
            $sub = $this->recurse($categories, $category['id'], $level+1);
            if($sub != '<ul></ul>')
                $ret .= $sub;
            $ret .= '</li>';
        }
    }
    return $ret . '</ul>';
}</code>

此修改确保只有具有子级的类别才有

    或者,您可以向每个类别添加子计数,并且仅包含

      元素。如果子计数大于零。

以上是如何在 PHP 中使用递归函数创建 Echo 菜单树?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn