无限分类三:递归
Posted 狂奔的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无限分类三:递归相关的知识,希望对你有一定的参考价值。
第一步,获取全部数据
第二部,写一个子分类的函数
第三,写一个递归循环函数
代码:
/** * 查询所有数据 并且缓存 * */ public function authData(){ $res = $this->order(‘listorder asc‘)->select(); // 格式化 foreach($res as $k=>$v){ $result[$v[‘id‘]] = $v; } Cache::set(‘auth‘,$result); return $result; } /** * 子类数组 * */ public function pidTree($pid=0){ $result = ‘‘; $arr = $this->authData(); if(empty($arr)) return false; foreach($arr as $k=>$v){ if($v[‘pid‘] ==$pid){ $result[$v[‘id‘]] = $v; } } return $result; } /** * 无限分类 树形结构 * */ public function getTree($pid=0){ $arr = $this->pidTree($pid); if(empty($arr)) return false; foreach($arr as $k=>$v){ $result[$v[‘id‘]] = $v; $result[$v[‘id‘]][‘son‘] = $this->getTree($v[‘id‘]); } return $result; }
输出结果
以上是关于无限分类三:递归的主要内容,如果未能解决你的问题,请参考以下文章
PHP面试题精讲—无限级分类/无限分类的递归算法和非递归算法-带源码建议收藏