我想制作一个循环来显示每个类别和所有子类别。我有这个数组:
$Allcategories = array(
array(
array("Category 1", 'category1'),
array("Sub 1", 'sub1'),
array("Sub 2", 'sub2'),
array("Sub 3", 'sub3')
),
array(
array("Category 2", 'category2'),
array("Sub 1", 'sub1'),
array("Sub 2", 'sub2'),
array("Sub 3", 'sub3')
)
);
我已经制作了一个3-nest-for循环,但是我希望用foreach
来简化它。
这是我的 循环:for
foreach ($Allcategories as $val_1)
{
echo "<a href='index.php?category=", $val_1[0][1], "'>", $val_1[0][0], "</a>";
foreach ($val_1 as $val_2)
{
foreach ($val_2 as $val_3)
{
printf('<li><a href="index.php?category=%1$s">%1$s</a><br />', $val_3);
}
}
}
问题是我得到了这个结果:
Category 1
-Category 1
-category1
-Sub 1
-sub1
-Sub 2
-sub2
答案 0 :(得分:2)
内部循环不应该遍历$Allcategories
,而是覆盖外部循环的值:
foreach ($Allcategories as $layerNum => $layer) {
...
foreach ($layer as $rowNum => $row) {
...
foreach ($row as $colNum => $category) {
答案 1 :(得分:0)
虽然您应该将其写为 ruakh ,但知道代码的问题是您忘记引用$key3
可能会有用。它应该是:
echo "<li><a href='index.php?category=".$Allcategories[$key1][$key2][$key3]
[1]."'>".$Allcategories[$key1][$key2][$key3][0]."</a><br />";
编辑:或者更好的是,整个事情:
foreach ($Allcategories as $val_1)
{
echo "<a href='index.php?category=" . $val_1[0][1] . "'>" . $val_1[0][0] . "</a>";
foreach ($val_1 as $val_2)
{
foreach ($val_2 as $val_3)
{
echo "<li><a href='index.php?category=" . $val_3[1] . "'>" . $val_3[0] . "</a><b></li>";
}
}
}
我也冒昧或删除了<br />
而关闭了<li>
因为我认为这就是你想要的?