La technologie ...LOGIN

La technologie de classification développée en PHP utilise la boucle foreach pour implémenter la fonction de classification

Qu'est-ce que la classification ? Tout comme la création d'un nouveau dossier sous Windows, vous pouvez créer un nouveau dossier

sous le nouveau dossier. Cela continuera dans une boucle infinie. Il en va de même pour la classification. La catégorie parent peut être divisée en sous-catégories. et les sous-catégories peuvent être

🎜>

peuvent être divisées en ses sous-catégories. . . . . .

Alors, comment PHP implémente-t-il sa classification ? Comment lister ses différentes catégories une à une ?

Dans ce chapitre, nous présenterons l'utilisation de la boucle foreach pour implémenter la fonction de classification.

Construisez d'abord un tableau de classification :

<?php
$categories = array(
  array('id'=>1,'name'=>'电脑','pid'=>0),
  array('id'=>2,'name'=>'手机','pid'=>0),
  array('id'=>3,'name'=>'笔记本','pid'=>1),
  array('id'=>4,'name'=>'台式机','pid'=>1),
  array('id'=>5,'name'=>'智能机','pid'=>2),
  array('id'=>6,'name'=>'功能机','pid'=>2),
  array('id'=>7,'name'=>'超级本','pid'=>3),
  array('id'=>8,'name'=>'游戏本','pid'=>3),
);
?>

Il y a 3 champs ici, l'identifiant de tri, le nom du nom de classification et le pid de classification


Le but est de le convertir en ce qui suit Structure :

QQ图片20161102150838.png

<?php
array(
      //1对应$categories中的id ,方便直接读取
      1 => array(
          'id'=>1,
          'name'=>'电脑',
          'pid'=>0,
          'children' =>array(
                            array(
                            'id'=>3,
                            'name'=>'笔记本',
                            'pid'=>1,
                            'children'=>array(
                                        'id'=>7,
                                        'name'=> '超极本',
                                        'pid'=>'3'
                                        ),
                                        array(
                                        'id'=>8,
                                        'name'=> '游戏本',
                                        'pid'=>'3'
                                        ) ,
                            ),
                            array(
                            'id'=>4,
                            'name'=>'台式机',
                            'pid'=>1,
                            ),
          ),
      ),
      2 => array(
            'id'=>2,
            'name'=>'手机',
            'pid'=>0,
            'children' =>array(
                              array(
                                'id'=>5,
                                'name'=>'智能机',
                                'pid'=>2,
                              ),
                              array(
                                'id'=>6,
                                'name'=>'功能机',
                                'pid'=>2,
                              ),
            ),
      ),
      );
?>

Processus de mise en œuvre :

Créer un tableau vide

<?php
$tree = array();
?>

La première étape consiste à ajouter tous les identifiants de classification En tant que clé du tableau, créez l'unité enfants

<?php
foreach($categories as $category){
  $tree[$category['id']] = $category;
  $tree[$category['id']]['children'] = array();
}
?>

Dans la deuxième étape, utilisez des références pour ajouter chaque catégorie au tableau enfants de la classe parent, afin qu'une structure arborescente puisse être formée en un seul parcours.

<?php
foreach ($tree as $key=>$value) {
  if ($value['pid'] != 0) {
    $tree[$value['pid']]['children'][] = $tree[$key];
  }
}
?>

Enfin, utilisez print_r(); pour l'imprimer

<?php
print_r($tree);
?>

Avantages : La relation est claire, et il est simple de modifier la relation supérieur-subordonné.

Inconvénients : en utilisant PHP pour le traitement, si le nombre de catégories est énorme, l'efficacité sera également réduite. <🎜>section suivante
<?php header("content-type:text/html;charset=utf-8"); //利用两个foreach来实现分类功能 /* 1. 构建字段 字段名 字段类型 备注 默认值 id int 主键 auto-increment name varchar 分类名称 pid int 父类id 0 */ //先来构建一个原始数组 $categories = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name'=>'手机','pid'=>0), array('id'=>3,'name'=>'笔记本','pid'=>1), array('id'=>4,'name'=>'台式机','pid'=>1), array('id'=>5,'name'=>'智能机','pid'=>2), array('id'=>6,'name'=>'功能机','pid'=>2), array('id'=>7,'name'=>'超级本','pid'=>3), array('id'=>8,'name'=>'游戏本','pid'=>3), ); array( //1对应$categories中的id ,方便直接读取 1 => array( 'id'=>1, 'name'=>'电脑', 'pid'=>0, 'children' =>array( array( 'id'=>3, 'name'=>'笔记本', 'pid'=>1, 'children'=>array( 'id'=>7, 'name'=> '超极本', 'pid'=>'3' ), array( 'id'=>8, 'name'=> '游戏本', 'pid'=>'3' ) , ), array( 'id'=>4, 'name'=>'台式机', 'pid'=>1, ), ), ), 2 => array( 'id'=>2, 'name'=>'手机', 'pid'=>0, 'children' =>array( array( 'id'=>5, 'name'=>'智能机', 'pid'=>2, ), array( 'id'=>6, 'name'=>'功能机', 'pid'=>2, ), ), ), ); //处理过程 $tree = array(); //第一步,将所有的分类id作为数组key,并创建children单元 foreach($categories as $category){ $tree[$category['id']] = $category; $tree[$category['id']]['children'] = array(); } //第二步,利用引用,将每个分类添加到父类children数组中,这样一次遍历即可形成树形结构。 foreach ($tree as $key=>$value) { if ($value['pid'] != 0) { $tree[$value['pid']]['children'][] = $tree[$key]; } } print_r($tree); ?>
soumettreRéinitialiser le code
chapitredidacticiel