我有一个像这样的表菜单
我有像第二张图片那样用ul和li标签这样显示的问题。 请帮我解决问题
menu_code | desc_code
1 |菜单1
1.1 |菜单1.1
1.2 |菜单1.2
1.2.1 |菜单1.2.1
2 |菜单2
我想用“无限级别菜单”概念显示我的表格菜单。
答案 0 :(得分:0)
我会考虑改变你的表结构。您将需要遍历每个父级和子级,您不希望通过字符串拆分来执行此操作。我建议你创建一个额外的列parent_id并绑定你的项目。之后,通过其子项递归地轻松爬行以创建ul>李结构。
递归函数示例:
public static function buildTree($items, $parent_id = null) {
$result = [];
foreach($items as $item) {
if($item->parent_id == $parent_id) {
$children = self::buildTree($items, $item->id);
if($children) {
$item->children = $children;
}
$result[$item->id] = $item;
}
}
return $result;
}
之后,您可以使用构建函数的结果递归创建菜单结构:
public static function treeToHtml($tree, $level = 0) {
$result = '';
$result .= '<ul>';
foreach($tree as $item) {
$has_children = isset($item->children) && count($item->children) > 0;
if($has_children) {
$result .= '<li><a href="#">';
$result .= self::treeToHtml($item->children, $level + 1);
$result .= '</li>';
} else {
$result .= '<li><a href="#"></li>';
}
}
$result .= '</ul>';
return $result;
}
相应地编辑功能并且静态地取决于您在其中使用它的上下文。