【发布时间】:2011-09-08 17:24:08
【问题描述】:
我正在尝试创建一个动态导航列表,其中包含列表中每个项目的子列表
我有 1 个包含 12 个父类别值的数组,是一个简单的一维数组。
我正在使用 foreach 循环遍历它以创建一个无序列表
我遇到的问题是我有一个子类别数组,它是一个多维数组,我需要为属于父类别的每个子类别创建一个嵌套列表。
<?php
//mysql query to get the parent categories
$query = "SELECT `parent` FROM `categories` GROUP BY `parent`";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
$cat[] = $row['parent']; //define the parent categories as a variable
}?>
<div id="navigation">
<ul>
<li><a href="http://localhost/softwarereviews.com">Home</a></li>
<?php
//loop through the parent categories
foreach ($cat as $parent) {
//another query to get the child categories that belong to each parent category
$query = "SELECT * FROM `categories` WHERE `parent` = '$parent'";
$result = mysql_query($query)
or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
//need 2 results so create a multi - dimensional array
$children[] = array($row['name'] => $row['cat_label']);
}?>
<li><?php echo $parent; ?></li>
<ul>
<?php foreach ($children as $key => $value) { ?>
<?php foreach ($value as $key => $value) { ?>
<li><a href="<?php echo $value;?>"><?php echo $key;?></a><li>
<?php }
}?>
</ul>
<?php }?>
</ul>
</div>
此时发生的是每个类别的子列表不断追加之前的列表结果,使得每个子列表的结果越来越大。
【问题讨论】:
-
您不应该在第二次使用 $key => $value !这非常令人困惑并且容易出错!至少将它们命名为 $key2 => $value2