無限級分類(上)
無限級分類

#什麼是無限級分類:
無限極分類說簡單點就是一個類別可以分成一個分子類,然後一個子類別又可以分另一個子類別這樣無限分下去,就是好像windows可以新建一個資料夾,然後在這個資料夾裡又可以建造一個資料夾。
public function index(){
$cate=D('cate');
$cateres=$cate->catetree();
$this->assign('cateres',$cateres);
$this->display();
}先在index控制器裡寫模版,$cateres呼叫catetree()方法。
catetree()方法寫在分類模型層如下
<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model {
protected $_validate = array(
array('catename','require','管理员名称不得为空!',1),
);
public function catetree(){
$data=$this->order('id desc')->select();
return $this->resort($data);
}
public function resort($data,$pid=0,$level=0){
static $arr=array();
foreach ($data as $k => $v) {
if ($v['pid']==$pid) {
$v['level']=$level;
$arr[]=$v;
$this->resort($data,$v['id'],$level+1);
}
}
return $arr;
}
}下面我們來依序講解如何實作。
catetree方法
取得數據,$this的意思是呼叫自身來查詢,使用id來進行排序。 return回傳查詢出來的結果。
resort方法
$data:取得的資料
$pid=0:頂級分類0開始
$level=0 分類等級
#先建立一個空數組用來存放數據,foreach來遍歷,如果$v['pid']==$pid意思是頂級id的話,那麼$v['level']=$level也是頂級分類,講查詢的資料存放到數組中,接下來繼續調用自身$this- >resort($data,$v['id'],$level 1); 這裡$data等於$data $v['id']等於$pid,$level 1代表$level每次加1。查出來的結果如下、

我們繼續加入幾個來查看

這就是我們的無限級分類的簡單原理。
新建檔案
<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model {
protected $_validate = array(
array('catename','require','管理员名称不得为空!',1),
);
public function catetree(){
$data=$this->order('id desc')->select();
return $this->resort($data);
}
public function resort($data,$pid=0,$level=0){
static $arr=array();
foreach ($data as $k => $v) {
if ($v['pid']==$pid) {
$v['level']=$level;
$arr[]=$v;
$this->resort($data,$v['id'],$level+1);
}
}
return $arr;
}
}
預覽
Clear
- 課程推薦
- 課件下載
課件暫不提供下載,工作人員正在整理中,後期請多關注該課程~ 















