我想把下面的数组变成html中的嵌套列表。
$aMenu = array(
array("name" => "Page 1",
"url" => "http://www.microsoft.se",
"subpages" => array(
array("name" => "Subpage 1.1", "url" => "http://www.reddit.com"),
array("name" => "Subpage 1.2", "url" => "http://www.google.se"),
array("name" => "Subpage 1.3", "url" => "http://www.cnn.com"),
)
),
array("name" => "Page 2", "url" => "http://www.facebook.com"),
array("name" => "Page 3",
"url" => "http://www.bbc.co.uk",
"subpages" => array(
array("name" => "Subpage 3.1", "url" => "http://www.jamesedition.com"),
array("name" => "Subpage 3.2", "url" => "http://www.huffpost.com"),
array("name" => "Subpage 3.3",
"url" => "http://www.lagunitas.com",
"subpages" => array(
array("name" => "Subpage 3.3.1", "url" => "http://www.burton.com"),
array("name" => "Subpage 3.3.2", "url" => "http://www.hm.com"),
array("name" => "Subpage 3.3.3", "url" => "http://www.apple.com"),
),
),
),
),
array("name" => "Page 4", "url" => "http://www.instagram.com"),
array("name" => "Page 5", "url" => "http://www.flickr.com"),
);
期望输出:
- 第1页
- 第1.1小节
- 第1.2小节
- 第1.3小节
- 第2页
- 第3页
- 第3.1小节
- 第3.2小节
- 第3.3小节
- 第3.3.1小节
- 第3.3.2小节
- 第3.3.3小节
- 第4页
- 第5页
我知道如何手动完成这项工作,也知道如何在数组的单个级别中循环,但我不知道如何在所有级别中循环并将结果输出到嵌套列表中。我看到了这些问题的单独解决方案,但我似乎无法使它们协同工作。如有任何帮助,我们将不胜感激。
PHP规范代码:
function list2html($list)
{
$html = '';
foreach ($list as $item)
{
$html .= '<li>' . $item['name'];
if ( !empty($item['subpages']) ) // recurse here
$html .= list2html($item['subpages']);
$html .= '</li>';
}
return '<ul>' . $html . '</ul>';
}
像这样使用:
$html_output = list2html($aMenu);
注意URL丢失,您必须修改函数才能添加它们
Note2不需要递归,可以迭代(或用迭代模拟递归),它会更快但更复杂的代码
您必须制作递归函数,该函数将遍历一级数组,并为作为参数找到的每个数组调用self。