PHP:动态嵌套无序列表
问题描述:
我目前正在呼应来自查询的数组,我需要将它们呈现在嵌套的无序列表中。我试图找到一种方法来无限地执行此过程,因为我目前手动回显每个嵌套的ul(如果它们有一个),直到手动编码的深度。如果有办法自动回应ul的深度“n”,请帮助我。PHP:动态嵌套无序列表
这是我目前唯一的逻辑呼应高达深度5:
<ul class="parent_tree"><?php
foreach($category_tree as $category_level_1)
{
echo '<li><a href="#">' . $category_level_1['name'] . '</a>';
if(array_key_exists('children', $category_level_1))
{
echo '<ul>';
foreach($category_level_1['children'] as $category_level_2)
{
echo '<li><a href="#">' . $category_level_2['name'] . '</a>';
if(array_key_exists('children', $category_level_2))
{
echo '<ul>';
foreach($category_level_2['children'] as $category_level_3)
{
echo '<li><a href="#">' . $category_level_3['name'] . '</a>';
if(array_key_exists('children', $category_level_3))
{
echo '<ul>';
foreach($category_level_3['children'] as $category_level_4)
{
echo '<li><a href="#">' . $category_level_4['name'] . '</a>';
if(array_key_exists('children', $category_level_4))
{
echo '<ul>';
foreach($category_level_4['children'] as $category_level_5)
{
echo '<li><a href="#">' . $category_level_5['name'] . '</a>';
//level 6 goes here
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
?>
</ul>
答
没有测试它,但你想使用递归此。基本上你继续用不同的参数调用相同的函数。它将遍历所有内容,并在没有更多的孩子数组时退出。
function recursive_list($category) {
echo '<ul>';
foreach($category as $item){
echo '<li><a href="#">' . $item['name'] . '</a>';
if(array_key_exists('children', $item)) {
recursive_list($item);
}
}
}
你听说过递归吗? – deadlock 2013-02-21 04:08:55
[回声菜单树与递归函数]的可能重复(http://stackoverflow.com/questions/10782810/echo-menu-tree-with-recursive-function) – mario 2013-02-21 04:11:43