用PHP中的两个数组创建带有子菜单的菜单

用PHP中的两个数组创建带有子菜单的菜单,php,Php,上面是我从db获取的父类别 下面是子类别 Array ( [0] => stdClass Object ( [id] => 1 [name] => Tops [parent_id] => ) [1] => stdClass Object (

上面是我从db获取的父类别

下面是子类别

    Array
    (
        [0] => stdClass Object
            (
                [id] => 1
                [name] => Tops
                [parent_id] => 
            )

        [1] => stdClass Object
            (
                [id] => 2
                [name] => Trousers
                [parent_id] => 
            )

        [2] => stdClass Object
            (
                [id] => 3
                [name] => Dresses
                [parent_id] => 
            )

        [3] => stdClass Object
            (
                [id] => 4
                [name] => Skirts
                [parent_id] => 
            )

        [4] => stdClass Object
            (
                [id] => 5
                [name] => Accessories
                [parent_id] => 
            )

        [5] => stdClass Object
            (
                [id] => 6
                [name] => Coats & Jackets
                [parent_id] => 
            )

)
下面是我如何制作navitaion吧

 Array
(
    [0] => stdClass Object
        (
            [id] => 8
            [name] => Mini Tops
            [parent_id] => 1
        )

    [1] => stdClass Object
        (
            [id] => 9
            [name] => Long Tops
            [parent_id] => 2
        )

    [2] => stdClass Object
        (
            [id] => 10
            [name] => Cargo
            [parent_id] => 2
        )

    [3] => stdClass Object
        (
            [id] => 11
            [name] => Bermuda
            [parent_id] => 2
        )

    [4] => stdClass Object
        (
            [id] => 12
            [name] => Formal Dresses
            [parent_id] => 3
        )

    [5] => stdClass Object
        (
            [id] => 13
            [name] => Casual Dresses
            [parent_id] => 3
        )

    [6] => stdClass Object
        (
            [id] => 14
            [name] => Party Wear
            [parent_id] => 3
        )

    [7] => stdClass Object
        (
            [id] => 15
            [name] => Jewelry 
            [parent_id] => 4
        )

    [8] => stdClass Object
        (
            [id] => 16
            [name] => Bracelets
            [parent_id] => 4
        )

    [9] => stdClass Object
        (
            [id] => 17
            [name] => Caps
            [parent_id] => 4
        )

)
由于我的逻辑不是很好,我实际上试图用这两个数组进行导航,第一个数组是主链接,应该在最上面,因为所有相应的子元素都将出现在相应父id示例的子菜单中

长上衣、货裤和百慕大裤应该是下链的

我需要指导我怎样才能做到这一点。。我试过每一圈,但在中间绊倒了


非常感谢

如果你在控制中,你应该尝试使用不同的阵列选择,因为现在你将进行不必要的循环。证明:

             <ul>
                <li>
                  <a href="search.html">Tops</a>
                  <ul class="sub-menu">
                        <li><a href="search.html">Tshirts</a></li>
                        <li><a href="search.html">Jumpers</a></li>
                        <li><a href="search.html">Cardigans</a></li>
                        <li><a href="search.html">Knitwear</a></li>
                    </ul>
                </li>
              </ul>
foreach($categories as$cat){
回声“
  • ”$cat->name.“
      ”; foreach($subcategories作为$subcat){ 如果($subcat->parent_id==$cat->id)回显“
    • ”$subcat->name。”
    • ” } 回声“
  • ”; }
    您必须循环每个类别的所有子类别。但是,如果您将子类别存储在索引表示父ID的数组中,则可以轻松地检索它们


    如果只想用一个数组解决这个问题,可以将子类别列表作为相应父类别的属性。这将很容易处理和语义。

    我不确定“中间停顿”是什么意思,你能澄清一下吗?我用lop表示父类别,用嵌套for循环表示子类别,现在我不知道该怎么办。。事实上,我不知道我应该如何构造数组,以便在查看页面(codeigniter)时,我可以从单个数组中创建包含子菜单的菜单。我不明白,这样您就可以将数组作为类引用了?我糊涂了@Charles,这只是一个输入错误,已修复。这是我需要的东西,但问题是,这东西在我的控制器文件中,我无法从这里直接回显。。。我应该在视图中传递两个数组吗?但在我看来,我可以使用$subcat->parent\u id?我被迫将一个数组仅pas到视图。。。在这种情况下,您的上述代码将不会work@user3445065可以,您可以将两个数组传递给视图。但就像我说的,最好找到另一个解决方案。例如,见最后一段。我不是在为你写代码。我只是用代码来解释这个问题,我也写了代码,因为你说你不能。
    foreach($categories as $cat) {
        echo "<li>".$cat->name."<ul>";
        foreach($subcategories as $subcat) {
            if($subcat->parent_id == $cat->id) echo "<li>".$subcat->name."</li>"
        }
        echo "</ul></li>";
    }