php实现数据树形结构 递归方法
2017-09-13 09:49
1106 查看
//2.定义递归查询 数据格式化 public function data($pid=0){ $data = \DB::table('types')->where('pid',$pid)->get(); foreach ($data as $key=>$val){ $val->zi = $this->data($val->id); } return $data; } //3.递归查询 数据格式化 public function data1($data,$pid=0){ $newArr = array(); //获取顶级分类 foreach ($data as $key=>$val){ if ($val->pid == $pid){ $newArr[$val->id] = $val; $newArr[$val->id]->zi = $this->data1($data,$val->id); } } return $newArr; } public function index() { //1.使用面向过程方式实现树层 (淘汰) $one = \DB::table('types')->where('pid',0)->get(); foreach ($one as $value){ $value->zi = \DB::table('types')->where('pid',$value->id)->get(); } foreach ($one as $value){ foreach ($value->zi as $v){ $v->zi = \DB::table('types')->where('pid',$v->id)->get(); } } //2.使用递归实现数据格式化 (不建议使用,对数据库压力较大) $arr = $this->data(); //3.递归实现数据格式化 ,优化2 $data = \DB::table('types')->get(); $arr = $this->data1($data,$pid=0); //实现树形结构 $data = \DB::select('select types.*,concat(path,id) p from types order by p'); //查询数据 // $data = \DB::table('types')->orderBy('sort','desc')->get(); return view('admin.types.index',['data'=>$data]); }
相关文章推荐
- 将树形结构的数据转换为二维数组 (续 PHP非递归方式实现无限分类(转载))
- php不用递归实现无限分类数据的树形格式化
- php实现的树形结构数据存取类实例
- 数据结构:题目(5)找两个字符串的最长公共子串(非递归实现方法)
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- 数据结构之队列――顺序存储结构(php代码实现――方法二)
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- 递归方法实现树形数据
- JavaScript递归方法 生成 json tree 树形结构数据
- JavaScript递归方法 生成 json tree 树形结构数据
- 数据结构(C#)--递归和动态规划法实现斐波那契数列的方法
- 数据结构之队列――顺序存储结构(php代码实现――方法一)
- php当数据量不是很大的时候,使用【递归循环出树形结构】的一个用户下面的所有人
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- php【递归循环出树形结构】的一个用户下面的所有人信息之【两种方法的对比】
- java、js中实现无限层级的树形结构方法(类似递归)
- php实现的树形结构数据存取类实例
- 数据结构 分别用递归和非递归方法实现二叉树先序,中序,后序遍历
- PHP不用递归实现无限分类数据的树形格式化 5行9行代码修改
- php实现无限级分类实现代码(递归方法)