Maison >développement back-end >Problème PHP >Quelle est la méthode de classification dans PHP Infinitus
Ce que je vous apporte aujourd'hui est la technologie de classification Infinitus de PHP. Je divise la classification Infinitus en deux types. La méthode spécifique est la suivante :
Tout d'abord, laissez-moi vous montrer la table de base de données. Les bases de données sont des tâches, et les tables de base de données sont également des tâches.
Recommandations associées : "Tutoriel PHP"
La première méthode (méthode tableau)
Cette méthode interroge d'abord toutes les données, et l'accent est mis sur le tableau bidimensionnel généré.
<?php //分类方法 function make_list($parent,$deep = 0){ global $tasks;//申明全局变量 global $strArr;//申明全局变量 $qianzhui = str_repeat(" ",$deep)."|--"; foreach ($parent as $key => $value) { $strArr[] = $qianzhui.$value; if(isset($tasks[$key])){ make_list($tasks[$key],++$deep);//递归调用函数 } } } //数据库连接 $dbc = mysqli_connect("localhost","root","1234","tasks"); //拼接sql语句 $q = "select task_id,parent_id,task from tasks where date_completed = '0000-00-00:00:00:00' order by parent_id, date_added asc"; //执行sql $r = mysqli_query($dbc,$q); //遍历结果集 while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) { //组成数组(一级键为parent_id,二级键为task_id,值为任务内容) $tasks[$parent_id][$task_id] = $task; } //打印数组 echo "<pre class="brush:php;toolbar:false">"; print_r($tasks); echo ""; make_list($tasks[0]); echo "
"; //打印缩进数组 print_r($strArr); echo ""; ?>
La deuxième méthode (méthode de table de recherche)
Cette méthode n'interroge en fait que parent_id= 0, et utilisez ensuite une méthode récursive pour générer dynamiquement des conditions de requête, puis utilisez le task_id de chaque enregistrement comme task_id, puis effectuez une nouvelle série de requêtes jusqu'à ce que le résultat de la requête soit vide.
<?php function findArr($where = "parent_id = 0",$deep = 0){ $dbc = mysqli_connect("localhost","root","1234","tasks"); global $strArr; $q = "select task_id,parent_id,task from tasks where ".$where." order by parent_id,date_added asc"; $r = mysqli_query($dbc,$q); $qianzhui = str_repeat(" ", $deep)."|--"; while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) { $strArr[] = $qianzhui.$task; //拼接查询条件 $where = "parent_id = ".$task_id; //递归查询 findArr($where,++$deep); } } findArr(); //打印缩进数组 echo "<pre class="brush:php;toolbar:false">"; print_r($strArr); echo ""; ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!