嘿大家,我被阵列困住了。我试图从我的sql做一个菜单,但我一直都在失败。
这是回复:
Id - 3 , Name - Axle, con - 7, Desc - thin
Id - 4 , Name - Axle, con - 7, Desc - flat
Id - 5 , Name - Ball, con - 8, Desc - round
Id - 6 , Name - Ball, con - 8, Desc - hard
基本上,它是一个连接,并通过con和partId连接,同一个con具有相同的名称。
所有人都希望它能做到这一点:
<ul>
<li>Axle
<li>thin</li>
<li>flat</li>
</li>
<li>Ball
<li>round</li>
<li>hard</li>
</li>
</ul>
我尝试了这一点,却一无所获 http://www.phpro.org/tutorials/Simple-Mysql-PHP-Menu.html#1
有人可以指导我朝正确的方向发展吗? 谢谢
UPDATE //////////
好的感谢回复,但我仍然无法工作。 我不能摆脱双轴。
答案 0 :(得分:1)
首先,我会为导航声明一个空数组。
$part_array = array();
首先,我将遍历数组并根据部件名称组合项目。
$counter = 0;
foreach($mysql_result_array as $part) {
$part_array[$part['ID'] = $part['ID'];
$part_array[$part['ID']['Name'] = $part['Name'];
$part_array[$part['ID']['parts'] = $part;
$counter++;
}
现在,您已将所有部件分开,但包含在阵列的相同ID中。从这里开始,我将循环遍历$ part_array的每个部分,并将该ID中的每个部分作为自己的列表项进行回显。
foreach($part_array as $list_item) {
echo '<ul id="<?=$part_item['ID']?>">';
echo '<li id="'.$list_item['Name'].'">'.$list_item['Name'];
echo '<ul id="'.$list_item['Name'].'_sub">';
foreach($list_item['parts'] as $list_item_part) {
echo '<li id="'.$list_item['Name'].'_.'.$list_item['Desc'].'"><a href="/part.php?id='.$list_item['conn'].'">'.$list_item['Desc'].'</a>';
}
}
它可能不是最有效或最优雅的,但希望它能给你这个想法。
答案 1 :(得分:0)
最好迭代结果列表并将主菜单条目与次要标题分开:
foreach ($results as $row) {
extract($row); // take care that $row entries can't overwrite vars
$main[$Id] = $Name;
$sub[$Id][] = $Desc;
}
然后遍历$ main列表,每个条目也遍历$ sub列表:
foreach ($main as $Id => $Name) {
print "<li>$Name";
print "<ul>";
foreach ($sub[$Id] as $Desc) {
print "<li>$Desc";
}
print "</ul></li>";
}
如果你有一个嵌套列表(你的问题没有这么说),那么你需要一个递归函数而不是简单的循环。