【发布时间】:2014-01-23 11:05:49
【问题描述】:
我想从 mysql 查询创建我的下拉菜单,但我遇到了子项目的问题。
我的基本表:
NavigationID ParentID Name Url
1 1 Home home
2 2 About about
3 3 Products products
4 3 Category1 #
5 3 Category2 #
6 4 Product1 #
7 5 Product2 #
我的简单 MySQL 查询并添加到数组:
class Navigation{
private $data;
public function __construct($par){
if(is_array($par))
$this->data = $par;
}
public function __toString(){
return '<li><a href="'.$this->data['Url'].'">'.$this->data['Name'].'</a></li>';
}
}
$query = mysql_query("SELECT * FROM Navigation n") or die(mysql_error());
$num = mysql_num_rows($query);
$menuitems = array();
while($row = mysql_fetch_assoc($query)){
$menuitems[] = new Navigation($row);
}
echo '<div id="nav"><ul>';
foreach($menuitems as $item){
echo $item;
}
echo '</ul></div>';
这样的结果是:
<div id="nav"><ul>
<li><a href="home">Home</a></li>
<li><a href="about">About</a></li>
<li><a href="products">Products</a></li>
<li><a href="#">Category1</a></li>
<li><a href="#">Category2</a></li>
<li><a href="#">Product1</a></li>
<li><a href="#">Product2</a></li>
</ul></div>
但我真正喜欢的是:
<div id="nav"><ul>
<li><a href="home">Home</a></li>
<li><a href="about">About</a></li>
<li><a href="products">Products</a>
<ul>
<li><a href="#">Category1</a>
<ul>
<li><a href="#">Product1</a></li>
</ul>
</li>
<li><a href="#">Category2</a>
<ul>
<li><a href="#">Product2</a></li>
</ul>
</li>
</ul>
</li>
</ul></div>
我怎样才能达到这个结果?我尝试了许多其他示例,但似乎没有一个对我有帮助。也许我没有在寻找正确的东西。
【问题讨论】:
-
先做2个循环你的父索引循环,然后在第一个循环下做另一个循环,这是父子循环,然后你就可以实现你的响应
-
阿哈,你能给我举个例子吗?
-
smartcoderszone.com/2013/09/… 看看这个链接它会很好地帮助你它是递归函数
-
太棒了!搞定了。谢谢阿迦!
标签: php mysql arrays multidimensional-array