thinkphp框架中使用递归实现无限级分类
无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人。今天博主分享的这个稍微有点基础的phper都能学会,希望大家能喜欢。
一、先建立对应的数据库和表:

请注意pid和id的外键关联关系,最顶级的pid为0。
二、新建一个控制器,我就用默认的IndexController.class.php
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Tree{ //定义一个空的数组 static public $treeList = array(); //接收$data二维数组,$pid默认为0,$level级别默认为1 static public function tree($data,$pid=0,$level = 1){ foreach($data as $v){ if($v['pid']==$pid){ $v['level']=$level; self::$treeList[]=$v;//将结果装到$treeList中 self::tree($data,$v['id'],$level+1); } } return self::$treeList ; }} |
接下来方法中调用
|
1
2
3
4
5
6
|
public function index(){ $res=M('cate')->select(); $res=Tree::tree($res); $this->cate=$res; $this->display(); } |
三、前台模板页面中展示出来。
|
1
2
3
4
5
6
|
<ul><volist name='cate' id='vo'> <!--这里加padding-left样式是为了更能看出层级的效果--> <li style="padding-left:{$vo['level']*20}px">{$vo.name}</li></volist></ul> |
四、最终预览效果如下图所示:

到此,递归实现无限级分类的效果就实现了。
转载自:http://www.dawnfly.cn/article-1-235.html 破晓博客

浙公网安备 33010602011771号