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