从包含子元素的php数组动态创建菜单列表
我有一个包含菜单项和子菜单项的PHP数组。子菜单项使用父ID和深度进行设置。示例数组如下所示:从包含子元素的php数组动态创建菜单列表,php,arrays,Php,Arrays,我有一个包含菜单项和子菜单项的PHP数组。子菜单项使用父ID和深度进行设置。示例数组如下所示: [0] => stdClass Object ( [CategoryID] => 4 [ParentCategoryID] => -1 [Depth] => 1 [Name] => Menu1 [1] => stdClass Object ( [CategoryID] => 2 [ParentCategoryID] => 4 [Depth] =>
[0] => stdClass Object ( [CategoryID] => 4 [ParentCategoryID] => -1 [Depth] => 1 [Name] => Menu1
[1] => stdClass Object ( [CategoryID] => 2 [ParentCategoryID] => 4 [Depth] => 2 [Name] => Submenu1
[2] => stdClass Object ( [CategoryID] => 3 [ParentCategoryID] => 4 [Depth] => 2 [Name] => Submenu2
[3] => stdClass Object ( [CategoryID] => 1 [ParentCategoryID] => -1 [Depth] => 1 [Name] => Menu2
<ul>
<li>
Menu1
<ul>
<li>Submenu1</li>
<li>Submenu2</li>
<ul>
</li>
<li>
Menu2
</li>
<ul>
现在我想让数组输出为列表和子列表,如下所示:
[0] => stdClass Object ( [CategoryID] => 4 [ParentCategoryID] => -1 [Depth] => 1 [Name] => Menu1
[1] => stdClass Object ( [CategoryID] => 2 [ParentCategoryID] => 4 [Depth] => 2 [Name] => Submenu1
[2] => stdClass Object ( [CategoryID] => 3 [ParentCategoryID] => 4 [Depth] => 2 [Name] => Submenu2
[3] => stdClass Object ( [CategoryID] => 1 [ParentCategoryID] => -1 [Depth] => 1 [Name] => Menu2
<ul>
<li>
Menu1
<ul>
<li>Submenu1</li>
<li>Submenu2</li>
<ul>
</li>
<li>
Menu2
</li>
<ul>
-
菜单1
- 子菜单1
- 子菜单2
-
菜单2
我无法将这些子菜单添加到父元素。有什么简单的方法可以做到这一点吗?您可以像这样循环数组
$a
echo "<ul>";
foreach ($a as $k => $v) {
// assuming depth = 1 is only for parent categories
if ($v->Depth == 1) {
echo "<li>";
echo $v->Name;
echo "<ul>";
foreach ($a as $k1 => $v1) {
// checking inner loops parent category with outer loop's category id
if ($v1->ParentCategoryID == $v->CategoryID) {
echo "<li>";
echo $v1->Name;
echo "</li>";
}
}
echo "</ul>";
echo "</li>";
}
}
echo "</ul>";
echo“”;
foreach($a为$k=>$v){
//假设深度=1仅适用于父类别
如果($v->Depth==1){
回声“- ”;
echo$v->Name;
回声“
”;
foreach($k1=>v1美元){
//使用外部循环的类别id检查内部循环父类别
如果($v1->ParentCategoryID==$v->CategoryID){
回声“- ”;
echo$v1->Name;
回声“
”;
}
}
回声“
”;
回声“ ”;
}
}
回声“
”;
尝试在PHP脚本中运行。父类别的可能副本的ParentCategoryID等于-,是吗?例如,您可以有ParentCategoryID为4的类别吗?