好吧,要构建我的菜单,我使用了类似这样的数据库结构
2服务0 3图片库0 4首页0 5反馈0 6个常见问题0 7新闻和活动0 8感言0 81 FACN 0 83组织结构81 84宪法81 85理事会81 86 IFAWPCA 81 87服务81 88出版物81
要为现有子菜单分配另一个子菜单,我只需将其父ID分配为其父字段的值即可。父级0表示顶级菜单
现在在另一个子菜单中创建子菜单时没有问题
现在这是我获取顶部菜单子菜单的方式
<ul class="topmenu"> <? $list = $obj -> childmenu($parentid); //this list contains the array of submenu under $parendid foreach($list as $menu) { extract($menu); echo '<li><a href="#">'.$name.'</a></li>'; } ?> </ul>
我想做的是。
我想检查一个新菜单是否还有其他子菜单
我要继续检查,直到它搜索到所有可用的子菜单为止
我想在其特定列表项中显示其子菜单,如下所示
<ul> <li><a href="#">Home</a> <ul class="submenu"> ........ <!-- Its sub menu --> </ul> </li> </ul>
您需要为此使用递归函数。 从技术上讲,有几种方法可以做到,但是递归实际上是这里的最佳选择 。
这是它如何工作的基本要点:
function drawMenu ($listOfItems) { echo "<ul>"; foreach ($listOfItems as $item) { echo "<li>" . $item->name; if ($item->hasChildren()) { drawMenu($item->getChildren()); // here is the recursion } echo "</li>"; } echo "</ul>"; }
的属性和方法$item只是示例,我将根据您的需要将其交给您来实现,但是我认为它可以传达信息。
$item