php 两种获取分类树的方法

Copy Highlighter-hljs
//分类树 if (!function_exists('getCate')){ function getCate($array, $pid =0, $level = 0){ //声明静态数组,避免递归调用时,多次声明导致数组覆盖 static $list = []; foreach ($array as $key => $value){ //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点 if ($value['pid'] == $pid){ //父节点为根节点的节点,级别为0,也就是第一级 $value['level'] = $level; //把数组放到list中 $list[] = $value; //把这个节点从数组中移除,减少后续递归消耗 unset($array[$key]); //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1 getCate($array, $value['cat_id'], $level+1); } } return $list; } } //父子级树状结构 if(!function_exists('get_tree_list')){ //引用方式实现 父子级树状结构 function get_tree_list($list){ //将每条数据中的id值作为其下标 $temp = []; foreach($list as $v){ $v['son'] = []; $temp[$v['id']] = $v; } //获取分类树 foreach($temp as $k=>$v){ // 将 $v 数据 赋值给其父级 $v['pid] 的son $temp[$v['pid']]['son'][] = &$temp[$v['id']]; } //pid 默认为0 return isset($temp[0]['son']) ? $temp[0]['son'] : []; } }
posted @   caibaotimes  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示