没什么可说的直接看代码
<?php namespace app\controller; class Category { //模拟假数据 protected static function arr() { $rows = [ [ ‘id‘ => ‘1‘, ‘name‘ => ‘一级菜单‘, ‘pid‘ => ‘0‘, ‘path‘ => ‘0‘, ], [ ‘id‘ => ‘2‘, ‘name‘ => ‘二级菜单‘, ‘pid‘ => ‘0‘, ‘path‘ => ‘0‘, ], [ ‘id‘ => ‘3‘, ‘name‘ => ‘一级菜单-1‘, ‘pid‘ => ‘1‘, ‘path‘ => ‘0-1‘, ], [ ‘id‘ => ‘4‘, ‘name‘ => ‘二级菜单-1‘, ‘pid‘ => ‘2‘, ‘path‘ => ‘0-2‘, ], [ ‘id‘ => ‘5‘, ‘name‘ => ‘一级菜单-1-1‘, ‘pid‘ => ‘3‘, ‘path‘ => ‘0-1-3‘, ], [ ‘id‘ => ‘6‘, ‘name‘ => ‘二级菜单-1-1‘, ‘pid‘ => ‘4‘, ‘path‘ => ‘0-2-4‘, ], [ ‘id‘ => ‘7‘, ‘name‘ => ‘二级菜单-1-2‘, ‘pid‘ => ‘4‘, ‘path‘ => ‘0-2-4‘, ], [ ‘id‘ => ‘8‘, ‘name‘ => ‘三级菜单‘, ‘pid‘ => ‘0‘, ‘path‘ => ‘0‘, ], [ ‘id‘ => ‘9‘, ‘name‘ => ‘二级菜单-1-3‘, ‘pid‘ => ‘4‘, ‘path‘ => ‘0-2-4-6‘, ], [ ‘id‘ => ‘10‘, ‘name‘ => ‘三级菜单-1‘, ‘pid‘ => ‘8‘, ‘path‘ => ‘0-8‘, ], [ ‘id‘ => ‘11‘, ‘name‘ => ‘一级菜单-1-4‘, ‘pid‘ => ‘5‘, ‘path‘ => ‘0-8‘, ], ]; return $rows; } public function index() { //获取从第0级下的所有分类(pid==0) $list = $this->build_tree(0); return json($list); } /** * 递归子级 * @param $list * @param $id * @return array */ public function findChild($list, $id) { $child = []; foreach ($list as $key => $item) { //如果pid等于传进来 if ($item[‘pid‘] == $id) { $child[] = $item; } } return $child; } /** * 获取当前级别的子级 * @param $root_id /第几层 * @return null */ public function build_tree($root_id) { //获取假数据 $list = $this->arr(); //查找指定级数 $tree = $this->findChild($list, $root_id); if (empty($tree)) { return null; } //遍历获取到的层级得到下级分类 foreach ($tree as $key => $item) { //递归调用自己 查找每个元素下的分类 $child = $this->build_tree($item[‘id‘]); //如果有子类就放入数组中 if ($child != null){ $tree[$key][‘child‘] = $child; } } return $tree; } } 预览结果ThinkPHP无限级分类(递归)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)