Classification infinie (partie 1)

Classification Infinie

2931721519-561aa0fe8bba4_articlex.png

Qu'est-ce que la Classification Infinie :

Classification Infinie Pour faire simple, une classe peut être divisée en une classe moléculaire, puis une sous-classe peut être Divisez-le en une autre sous-catégorie et continuez indéfiniment, comme si Windows pouvait créer un nouveau dossier, puis créer un dossier dans ce dossier.

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

Écrivez d'abord le modèle dans le contrôleur d'index et $cateres appelle la méthode catetree(). La méthode

catetree() est écrite dans la couche du modèle de classification comme suit

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

}

Expliquons comment l'implémenter à tour de rôle.

méthode catetree

Obtenir des données, $cela signifie s'appeler pour interroger et utiliser l'identifiant pour trier. return renvoie les résultats de la requête.

resort method
$data : Données obtenues

$pid=0 : À partir de la catégorie supérieure 0

$level=0 niveau de classification

Créez d'abord un tableau vide avec Pour stocker des données, foreach est utilisé pour parcourir. Si $v['pid']==$pid signifie l'identifiant de niveau supérieur, alors $v['level']=$level est également la catégorie de niveau supérieur, et le les données interrogées sont stockées dans le tableau. Ensuite, continuez à s'appeler $this->resort($data,$v['id'],$level+1); Ici, $data est égal à $data $v['); id'] est égal à $pid, $level+1 Représente $level augmentant de 1 à chaque fois. Les résultats trouvés sont les suivants,

QQ截图20170623144118.png

Nous continuons d'en ajouter quelques-uns pour vérifier

QQ截图20170623144430.png

C'est le principe simple de notre classement infini.

Formation continue
||
<?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; } }
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel