Infinite Classification (Part 1)
Unlimited classification

# #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.
<?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,

Let’s continue to add a few more to see

This is the simple principle of our infinite classification.

