如何使用 Php Codeigniter 为分层导航创建递归循环?

how to make a recursive loop for a hierarchal navigation using Php Codeigniter?

这是我的 table,我需要使用 php?

来显示它

例如。导航 Table

看起来像这样:

是否有任何 php 代码?

谢谢!

模型中的代码

public function getHierMenu() {
    $rows = $this->db->get('table_name')->result();

    $depthIndex = array('nav_hier_root','nav_hier_d1','nav_hier_d2','nav_hier_d3','nav_hier_d4');
    $menu = [];
    foreach($rows as $row){
        $depth = $row->nav_hier_depth;

        if($depth > 0)
        $menu[$row->$depthIndex[0]] = [];
        if($depth > 1)
        $menu[$row->$depthIndex[0]][] = $row->$depthIndex[1];
        if($depth > 2)
        $menu[$row->$depthIndex[0]][$row->$depthIndex[1]][] = $row->$depthIndex[2];
        if($depth > 3)
        $menu[$row->$depthIndex[0]][$row->$depthIndex[1]][$row->$depthIndex[2]][] = $row->$depthIndex[3];
        if($depth > 4)
        $menu[$row->$depthIndex[0]][$row->$depthIndex[1]][$row->$depthIndex[2]][$row->$depthIndex[3]][] = $row->$depthIndex[4];
    }

    return $menu;
}

更新

使用此递归函数并传递从上一个函数返回的数组 ($menu) 以使用 ul li.

打印菜单
function printMenu($menu) {

    echo '<ul>';
    foreach ($menu as $k => $v) {
        echo '<li>';
        if (!empty($v) && is_array($v)) {
            echo $k;
            printMenu($v);
        } else {
            echo $v;
        }
        echo '</li>';
    }
    echo '</ul>';
}

它已经过测试并且工作正常。