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>