PHP递归函数生成树结构菜单
我已经创建了一个MySQL数据库表,我想在其中显示基于其父级的菜单结构。菜单表包含以下数据:PHP递归函数生成树结构菜单,php,Php,我已经创建了一个MySQL数据库表,我想在其中显示基于其父级的菜单结构。菜单表包含以下数据: id | menuname | parentid ---+-------------------+--------- 1 | dashboard | 0 2 | Content | 0 3 | Home Page Content | 2 4 | Banners | 2
id | menuname | parentid
---+-------------------+---------
1 | dashboard | 0
2 | Content | 0
3 | Home Page Content | 2
4 | Banners | 2
5 | Settings | 0
6 | Block Content | 3
7 | Site Content | 3
使菜单结构看起来像:
- 仪表板
- 内容
- 主页内容
- 块内容
- 网站内容
- 主页内容
- 横幅
- 背景
但是,我无法理解基础知识。然而,我明白我需要编写一个递归函数来解决这个问题。有人能告诉我如何生成上述内容吗?想象一下,您是通过sql查询从数据库中选择的
SELECT * FROM my_table ORDER BY parentid ASC, id ASC
在PHP中有这个数组
$arr = [
[
"id"=>1,
"username"=>"dashboard",
"parentid"=>0
],
[
"id"=>2,
"username"=>"dashboard",
"parentid"=>0
],
[
"id"=>5,
"username"=>"dashboard",
"parentid"=>0
],
[
"id"=>3,
"username"=>"dashboard",
"parentid"=>2
],
[
"id"=>4,
"username"=>"dashboard",
"parentid"=>2
],
[
"id"=>6,
"username"=>"dashboard",
"parentid"=>3
],
[
"id"=>7,
"username"=>"dashboard",
"parentid"=>3
],
];
$categories = [];
foreach ($arr as $item){
if($item["parentid"]==0){
$categories[$item["id"]] = $item;
}else{
$categories[$item["parentid"]]["subs"][] = $item;
}
}
对于初学者,您应该使用
select*from my_table order by parentid ASC,id ASC
,其余的将需要PHP逻辑。另外,为什么在您的示例中,banner
不是Content
的子项?如果您对MySQL中的分层表结构和查询感兴趣,那么您可以查看