从带有子元素的php数组动态创建菜单列表

时间:2019-04-09 09:09:06

标签: php arrays

我有一个包含菜单项和子菜单项的PHP数组。子菜单项设置有父ID和深度。一个示例数组如下所示:

[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 个答案:

答案 0 :(得分:1)

您可以像这样循环数组$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>";

尝试在PHP脚本中运行。