Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从包含子元素的php数组动态创建菜单列表_Php_Arrays - Fatal编程技术网

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

从包含子元素的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] =>

我有一个包含菜单项和子菜单项的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>
现在我想让数组输出为列表和子列表,如下所示:

[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的类别吗?