Php 如何从我的数据库中获取多维菜单?
我想做一份菜单,我不知道菜单有多深 以下是我的数据库表的外观: 表Php 如何从我的数据库中获取多维菜单?,php,mysql,multidimensional-array,Php,Mysql,Multidimensional Array,我想做一份菜单,我不知道菜单有多深 以下是我的数据库表的外观: 表菜单字段id,parent\u id,name 我已经尝试过这样做以获得一个漂亮的阵列,但它不起作用: public function get() { $nodeList = array(); $tree = array(); $query = $this->db->get('menu'); $result = $query->result_array(); for
菜单字段id
,parent\u id
,name
我已经尝试过这样做以获得一个漂亮的阵列,但它不起作用:
public function get()
{
$nodeList = array();
$tree = array();
$query = $this->db->get('menu');
$result = $query->result_array();
foreach ($result as $row) {
$nodeList[$row['id']] = array_merge($row, array('children' => array()));
}
foreach ($nodeList as $nodeId => &$node) {
if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
$tree[] =& $node;
} else {
$nodeList[$node['parent']]['children'][] =& $node;
}
}
return $nodeList;
}
最终我想要实现这一点(一个好看的菜单):
我希望你能理解我的问题并能帮助我。我真的很高兴!!我需要这个
谢谢;) 您的get()
可能应该返回$tree
,而不是$nodeList
。除此之外,它看起来很好
更新。此示例显示如何为嵌套菜单构建HTML:
函数getUl($nodes)
{
$result=“\n”;
foreach($n节点){
$result.='- ';
如果(!空($n['children'])){
$result.=getUl($n['children']);
}
$result.=“
\n”;
}
$result.=“\n
”;
返回$result;
}
omg我真是太傻了,thx:D但是你能帮我设置菜单吗?我不知道怎么修理that@apero试试我贴的一个例子。
<ul>
<li><a href="">Apple<a/>
<ul>
<li><a href="">Iphone</a></li>
<ul>
<li><a href="">4S</a></li>
<li><a href="">5</a></li>
</ul>
<li><a href="">Ipad</a></li>
<ul>
<li><a href="">4</a></li>
<li><a href="">5</a></li>
</ul>
</ul>
</li>
<li><a href="">Samsung<a/>
<ul>
<li><a href="">Galaxy</a></li>
<ul>
<li><a href="">S3</a></li>
<li><a href="">S4</a></li>
</ul>
</ul>
</li>