在嵌套菜单系统中,每个菜单项都可以有子菜单项,它们又可以有自己的子项目。目标是有效地从数据库中获取并显示这些嵌套菜单级别。
为了实现这一点,我们可以采用一种非递归方法,其中涉及:
这是一个演示上述方法的 PHP 函数:
<code class="php">function generateMenu($items) { $html = ''; $parent = 0; $parentStack = array(); $children = array(); foreach ($items as $item) { $children[$item['parent_id']][] = $item; } while (($option = each($children[$parent])) || ($parent > 0)) { if (!empty($option)) { // 1) Item with children if (!empty($children[$option['value']['id']])) { $html .= '<li>' . $option['value']['title'] . '</li>'; $html .= '<ul>'; array_push($parentStack, $parent); $parent = $option['value']['id']; } // 2) Item without children else { $html .= '<li>' . $option['value']['title'] . '</li>'; } } // 3) Current parent has no more children else { $html .= '</ul>'; $parent = array_pop($parentStack); } } return $html; }</code>
要使用该函数,首先从数据库中检索菜单项并将它们作为数组传递给generateMenu() 函数。生成的 HTML 将是一系列嵌套的无序列表,表示分层菜单结构。
这种非递归方法消除了可能发生的无限循环的风险递归,使其成为生成嵌套菜单的更稳定、更高效的解决方案。
以上是如何使用 PHP 和 MySQL 构建无限嵌套菜单系统:非递归方法?的详细内容。更多信息请关注PHP中文网其他相关文章!