thinkphp框架中使用遞歸實現無限級分類


無限級分類在我們開發中顯得舉足輕重,會經常被人問到,而一般會用遞歸的方法來實現,但是遞歸又會難倒一批人。今天博主分享的這個稍微有點基礎的phper都能學會,希望大家能喜歡。

一、先建立對應的數據庫和表:

無限級分類之mysql數據庫表

請注意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  破曉博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM