如何使用 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>';
}
它已经过测试并且工作正常。
这是我的 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>';
}
它已经过测试并且工作正常。