php 无限极分类 封装
<?php namespace App\Services; use Illuminate\Http\Request; /** * Class PendingService * @package App\Service * 无限分类公共类 */ class LimitlessService { protected $_request; // public function __construct(Request $request) // { // $this->_request = $request; // // } //递归 public function getTree($data, $pid) { $list = []; foreach($data as $key=>$val) { if($val['pid'] == $pid){ $val['children'] = $this->getTree($data, $val['id']); $list[] = $val; } } return $list; } //非递归 public function arr2tree($list, $id = 'id', $pid = 'pid', $son = 'children') { list($tree, $map) = [[], []]; foreach ($list as $item) { $map[$item[$id]] = $item; } foreach ($list as $item) { if (isset($item[$pid]) && isset($map[$item[$pid]])) { $map[$item[$pid]][$son][] = &$map[$item[$id]]; } else { $tree[] = &$map[$item[$id]]; } } unset($map); return $tree; } public function arr2table(array $list, $id = 'id', $pid = 'pid', $path = 'path', $ppath = '') { $tree = []; foreach ($this->arr2tree($list, $id, $pid) as $attr) { $attr[$path] = "{$ppath}-{$attr[$id]}"; $attr['children'] = isset($attr['children']) ? $attr['children'] : []; $attr['spt'] = substr_count($ppath, '-'); $attr['spl'] = str_repeat(" ├ ", $attr['spt']); $sub = $attr['children']; unset($attr['children']); $tree[] = $attr; if (!empty($sub)) { $tree = array_merge($tree, $this->arr2table($sub, $id, $pid, $path, $attr[$path])); } } return $tree; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具