本文實例講述了php無限極分類實現方法。分享給大家供大家參考,具體如下:
今天給大家帶來的是php的無限極分類技術,本人把無限極分類劃分為兩種。
首先我把數據庫表給大家看看,數據庫是tasks,數據庫表也是tasks

第一種方法(數組法)
這種方法其實是先把所有的數據查詢出來,重點在于生成的二維數組
?php
//分類方法
function make_list($parent,$deep = 0){
global $tasks;//申明全局變量
global $strArr;//申明全局變量
$qianzhui = str_repeat("nbsp;",$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>";
print_r($tasks);
echo "/pre>";
make_list($tasks[0]);
echo "pre>";
//打印縮進數組
print_r($strArr);
echo "/pre>";
?>

運行結果圖
第二種方法(查表法)
這種方法其實是在一開始只查詢出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("nbsp;", $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>";
print_r($strArr);
echo "/pre>";
?>

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- PHP實現無限極分類的兩種方式示例【遞歸和引用方式】
- PHP超牛逼無限極分類生成樹方法
- PHP實現無限極分類圖文教程
- php無限極分類實現的兩種解決方法
- ThinkPHP菜單無極分類實例講解