首頁  >  文章  >  後端開發  >  php無限極分類的方法是什麼

php無限極分類的方法是什麼

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-08-28 11:59:594655瀏覽

php無限極分類的方法是什麼

今天帶給大家的是php的無限極分類技術,本人把無限極分類分成兩種。具體方法如下:

首先我把資料庫表給大家看看,資料庫是tasks,資料庫表也是tasks。

php無限極分類的方法是什麼

相關推薦:《PHP教學

第一種方法(陣列法)

這種方法其實是先把所有的資料查詢出來,重點在於產生的二維數組。

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

php無限極分類的方法是什麼

第二種方法(查表法)

這個方法其實就是在一開始只查詢出parent_id= 0的所有任務,然後採用遞歸的方式,動態產生查詢條件,然後把每筆記錄的task_id又當作task_id,這樣又進行新一輪的查詢,直到查詢結果為空。

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

php無限極分類的方法是什麼

#

以上是php無限極分類的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn