无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人。今天博主分享的这个稍微有点基础的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 破晓博客