菜单树生成的递归
在您的情况下,您有一个数据库结构,其中类别有一个“根”字段指示其父类别。您想要的 HTML 输出涉及表示类别层次结构的嵌套列表。为了实现这一点,可以使用递归 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>
此函数假设根类别有一个值为空值的“root”字段。它迭代类别,根据“根”字段识别子类别,并使用嵌套列表构建 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中文网其他相关文章!