当前位置:网站首页>PHP 无限极分类和树形
PHP 无限极分类和树形
2022-04-23 05:57:00 【自己收藏学习】
PS:树形结构我前端不知道怎么无限制遍历下去,感觉只适合明确了总共几层的,比如一、二、三级菜单这种,不适合无限级
无限级分类(递归方法):
/*
递归无限极分类
*/
function unlimitedMenu($arr,$pid=0,$level=0){
static $list = array();
foreach ($arr as $v) {
//如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
if ($v['pid'] == $pid) {
$v['level'] = $level;
$list[] = $v;
unlimitedMenu($arr,$v['id'],$level+1);
}
}
return $list;
}
树形菜单(一):
/*
数组返回树形结构
$id 自增ID字段名
$pid 父类id字段名
$son 子集的键名
*/
function tree($array,$id='id',$pid='pid',$son='son'){
$temp = [];
foreach ($array as $v) {
$v[$son] = [];
$temp[$v[$id]] = $v;
}
//获取分类树
foreach ($temp as $k => $v) {
$temp[$v[$pid]][$son][] = &$temp[$v[$id]];
}
return isset($temp[0][$son]) ? $temp[0][$son] : [];
}
树形菜单(二):
function getChild($data, $id = 0)
{
//初始化儿子
$child = [];
//循环所有数据找$id的儿子
foreach ($data as $key => $datum) {
//找到儿子了
if ($datum['pid'] == $id) {
//保存下来,然后继续找儿子的儿子
$child[$datum['id']] = $datum;
//先去掉自己,自己不可能是自己的儿孙
unset($data[$key]);
//递归找,并把找到的儿子放到一个child的字段中
$child[$datum['id']]['child'] = getChild($data, $datum['id']);
}
}
return $child;
}
版权声明
本文为[自己收藏学习]所创,转载请带上原文链接,感谢
https://blog.csdn.net/pksport/article/details/121539847
边栏推荐
猜你喜欢
随机推荐
Navicat 连接 oracle library is not loaded的解决方法
Node访问服务器端静态资源
el-date-picker限制选择范围,从当前时间到两个月前
Mailbox string judgment
JS性能优化
C language structure specifying initialization
.NET Standard详解
leetcode刷题之整数加一
freeCodeCamp----budget & category 练习
查漏补缺(七)
百度地图案例-缩放组件、地图比例组件
查漏补缺(六)
七牛上传图片(前台JS+后台C#API获取token)
New type of dark energy could solve Universe expansion mystery
freeCodeCamp----shape_calculator练习
Promise(四)
Mysql中的索引与视图
ASP.NET CORE在类库项目中读取配置文件
C# webpai 路由详解
浏览器中堆栈内存的底层处理