亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

無(wú)限級(jí)分類(lèi)(上)

無(wú)限級(jí)分類(lèi)

2931721519-561aa0fe8bba4_articlex.png

什么是無(wú)限級(jí)分類(lèi):

無(wú)限極分類(lèi)說(shuō)簡(jiǎn)單點(diǎn)就是一個(gè)類(lèi)可以分成一個(gè)分子類(lèi),然后一個(gè)子類(lèi)又可以分另一個(gè)子類(lèi)這樣無(wú)限分下去,就是好象windows可以新建一個(gè)文件夾,然后在這個(gè)文件夾里又可以建一個(gè)文件夾。

public function index(){
        $cate=D('cate');
        $cateres=$cate->catetree();
        $this->assign('cateres',$cateres);
        $this->display();
    }

先在index控制器編寫(xiě)模版,$cateres調(diào)用catetree()方法。

catetree()方法寫(xiě)在分類(lèi)模型層如下

<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model {

    protected $_validate = array(
      array('catename','require','管理員名稱(chēng)不得為空!',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;
    }

}

下面我們來(lái)依次講解如何實(shí)現(xiàn)。

catetree方法

獲取數(shù)據(jù),$this的意思是調(diào)用自身來(lái)查詢(xún),使用id來(lái)進(jìn)行排序。return返回查詢(xún)出來(lái)的結(jié)果。

resort方法
$data:獲取的數(shù)據(jù)

$pid=0:頂級(jí)分類(lèi)0開(kāi)始

$level=0 分類(lèi)級(jí)別

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

QQ截圖20170623144118.png

我們繼續(xù)添加幾個(gè)來(lái)查看

QQ截圖20170623144430.png

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

Weiter lernen
||
<?php namespace Admin\Model; use Think\Model; class CateModel extends Model { protected $_validate = array( array('catename','require','管理員名稱(chēng)不得為空!',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; } }
einreichenCode zurücksetzen