国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

無限級(jí)分類

2931721519-561aa0fe8bba4_articlex.png

#什麼是無限級(jí)分類:

無限極分類說簡(jiǎn)單點(diǎn)就是一個(gè)類別可以分成一個(gè)分子類,然後一個(gè)子類別又可以分另一個(gè)子類別這樣無限分下去,就是好像windows可以新建一個(gè)資料夾,然後在這個(gè)資料夾裡又可以建造一個(gè)資料夾。

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;
    }

}

下面我們來依序講解如何實(shí)作。

catetree方法

取得數(shù)據(jù),$this的意思是呼叫自身來查詢,使用id來進(jìn)行排序。 return回傳查詢出來的結(jié)果。

resort方法
$data:取得的資料

$pid=0:頂級(jí)分類0開始

$level=0 分類等級(jí)

#先建立一個(gè)空數(shù)組用來存放數(shù)據(jù),foreach來遍歷,如果$v['pid']==$pid意思是頂級(jí)id的話,那麼$v['level']=$level也是頂級(jí)分類,講查詢的資料存放到數(shù)組中,接下來繼續(xù)調(diào)用自身$this- >resort($data,$v['id'],$level 1); ?這裡$data等於$data ??$v['id']等於$pid,$level 1代表$level每次加1。查出來的結(jié)果如下、

QQ截圖20170623144118.png

我們繼續(xù)加入幾個(gè)來查看

QQ截圖20170623144430.png

這就是我們的無限級(jí)分類的簡(jiǎn)單原理。

繼續(xù)學(xué)習(xí)
||
<?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; } }
提交重置程式碼