Infinite Classification (Part 1)

Unlimited classification

2931721519-561aa0fe8bba4_articlex.png

# #What is infinite classification:

Infinite classification simply means that a class can be divided into a molecular class, and then a subclass can be divided into another subclass and so on indefinitely. It seems that Windows can create a new folder, and then create a folder within this folder.

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

First write the template in the index controller, and $cateres calls the catetree() method.

The catetree() method is written in the classification model layer as follows

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

}

Let’s explain how to implement it in turn.

catetree method

Get data, $this means calling itself to query, and use id to sort. return returns the results of the query.

resort method $data: Obtained data

$pid=0: Top category starts with 0

$level=0 Classification level

First create an empty array to store the data, and use foreach to traverse it. If $v['pid']==$pid means the top-level id, then $v['level']=$level is also the top-level category. The queried data is stored in the array, and then continues to call itself $this- >resort($data,$v['id'],$level 1); Here $data is equal to $data $v['id'] is equal to $pid, $level 1 means $level increases by 1 each time. The results found are as follows,

QQ截图20170623144118.png

Let’s continue to add a few more to see

QQ截图20170623144430.png

This is the simple principle of our infinite classification.

Continuing Learning
||
<?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; } }
submitReset Code