Php 如何使用递归迭代器生成多级HTML菜单?
我很难让我的头在Php 如何使用递归迭代器生成多级HTML菜单?,php,html,recursion,iterator,spl,Php,Html,Recursion,Iterator,Spl,我很难让我的头在RecrusiveIteratorIterator和亲戚们迭代一个多维页面数组以在PHP中构建一个多级菜单 通常我只是创建一个在某个级别上循环的函数,并调用它自己在任何子级上循环。但是我想利用PHP中的迭代器接口来改进代码 我的数组如下所示: $pages = array( new Page(1, 'Home'), new Page(2, 'Pages', array( new Page(3, 'About'), new Page(
RecrusiveIteratorIterator
和亲戚们迭代一个多维页面数组以在PHP中构建一个多级菜单
通常我只是创建一个在某个级别上循环的函数,并调用它自己在任何子级上循环。但是我想利用PHP中的迭代器接口来改进代码
我的数组如下所示:
$pages = array(
new Page(1, 'Home'),
new Page(2, 'Pages', array(
new Page(3, 'About'),
new Page(4, 'Contact')
)),
new Page(5, 'Categories', array(
new Page(6, 'Clothing'),
new Page(7, 'DVDs')
))
);
我的页面
构造函数中的参数只是页面ID和页面名称
我如何使用PHP的迭代器构建一个如下所示的菜单
<ul>
<li>Home</li>
<li>Pages
<ul>
<li>About</li>
<li>Contact</li>
</ul>
</li>
<li>Categories
<ul>
<li>Clothing</li>
<li>DVDs</li>
</ul>
</li>
</ul>
- 家
- 页数
- 关于
- 接触
- 类别
- 服装
- DVD
这通常是一个三步程序:
recursiveiterator
上使用foreach
进行迭代来完成输出 // consume implementation of step 1
$it = new PagesRecursiveIterator($pages);
// consume implementation of step 2
$list = new RecursiveUlLiIterator($it);
// perform iteration given in step 3
foreach($list as $page) {
echo $page->getName();
}
对于您的特定问题,请参见此处的答案:另请参见: