我有一个数据集存储在一个数组中,该数组使用父子 id:
id
、parent_id
等引用自身title
。顶层有一个parent_id
of 0
,并且可以有无数的父子关系。
所以我foreach
在递归函数中使用循环对这个数组进行排序,以检查每个数组元素与它的父元素,我想我已经盯着这个方法太久了。
我确实以正确的顺序结束了元素,但我似乎无法正确嵌套列表,这让我认为该方法并没有真正起作用。
- 这是最好的路线吗?
- 我能做些什么来改进和修复这个方法
- 我可以应用另一个技巧吗?
这是我的来源:
<div>
<div>Subpages</div>
<ul>
<?php subPages($this->subpages->toArray(), 0) ?>
</ul>
<br>
<a href="javascript:;" onclick="">Add New Subpage</a>
</div>
<?php
function subPages($subpages, $parent){
foreach($subpages as $key => &$page){
$newParent = $page['id'];
//If the current page is the parrent start a new list
if($page['id'] == $parent)
{
//Echo out a new list
echo '<ul>';
echo '<li class="collapsed">';
echo '<a href="javascript:;" class="toggle">+</a>';
echo '<a href="javascript:;" onclick="">'.$page['title'].'</a>';
subPages($subpages, $newParent);
echo '</li>';
echo '</ul>';
}
//If the page's parent id matches the parent provided
else if($page['parent_id'] == $parent)
{
//Echo out the link
echo '<li class="collapsed">';
echo '<a href="javascript:;" class="toggle">+</a>';
echo '<a href="javascript:;" onclick="">'.$page['title'].'</a>';
//Set the page as the new parent
$newParent = $page['id'];
//Remove page from array
unset($subpages[$key]);
//Check the rest of the array for children
subPages($subpages, $newParent);
echo '</li>';
}
}
}
?>
一如既往,感谢您提供任何帮助。如果有不清楚的地方,请告诉我。