Home  >  Article  >  Backend Development  >  What is the method of classification in PHP Infinitus

What is the method of classification in PHP Infinitus

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-08-28 11:59:594669browse

What is the method of classification in PHP Infinitus

What I bring to you today is PHP’s Infinitus classification technology. I divide Infinitus classification into two types. The specific method is as follows:

First of all, I will show you the database table. The database is tasks, and the database table is also tasks.

What is the method of classification in PHP Infinitus

Related recommendations: "PHP Tutorial"

The first method (array method)

This method actually queries all the data first, focusing on the generated two-dimensional array.

<?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 = &#39;0000-00-00:00:00:00&#39; 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 "
"; ?>

What is the method of classification in PHP Infinitus

The second method (lookup table method)

This method actually only queries parent_id= at the beginning. 0, and then use a recursive method to dynamically generate query conditions, and then use the task_id of each record as task_id, and then conduct a new round of query until the query result is empty.

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

What is the method of classification in PHP Infinitus

The above is the detailed content of What is the method of classification in PHP Infinitus. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn