无限级分类 php_php无限极分类的方法是什么
今天給大家帶來的是php的無限極分類技術,本人把無限極分類劃分為兩種。具體方法如下:
首先我把數據庫表給大家看看,數據庫是tasks,數據庫表也是tasks。
相關推薦:《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 = '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 "
";print_r($tasks);
echo "
";make_list($tasks[0]);
echo "
";//打印縮進數組
print_r($strArr);
echo "
";?>
第二種方法(查表法)
這種方法其實是在一開始只查詢出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 "
";print_r($strArr);
echo "
";?>
總結
以上是生活随笔為你收集整理的无限级分类 php_php无限极分类的方法是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习导论(张志华):EM算法
- 下一篇: 机器学习导论(张志华):概率PCA