무한 분류(1부)

무한 분류

2931721519-561aa0fe8bba4_articlex.png

무한 분류란 무엇입니까:

무한 분류 간단히 말하면 클래스를 분자 클래스로 나눈 다음 하위 클래스를 다른 하위 범주로 나누고 마치 Windows가 새 폴더를 생성할 수 있는 것처럼 이 작업을 무한정 계속한 다음 이 폴더 내에 폴더를 생성합니다.

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

먼저 인덱스 컨트롤러에 템플릿을 작성하고 $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 method
$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씩 증가함을 나타냅니다. 찾아낸 결과는 다음과 같습니다.

QQ截图20170623144118.png

계속해서 몇 가지를 추가하여 확인하고 있습니다

QQ截图20170623144430.png

이것이 우리의 무한 분류의 간단한 원리입니다.

지속적인 학습
||
<?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; } }
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~