無限級分類在我們開發中顯得舉足輕重,會經常被人問到,而一般會用遞歸的方法來實現,但是遞歸又會難倒一批人。今天博主分享的這個稍微有點基礎的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 破曉博客