php無(wú)限極分類實(shí)現(xiàn)方法分析
本文實(shí)例講述了php無(wú)限極分類實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
今天給大家?guī)?lái)的是php的無(wú)限極分類技術(shù),本人把無(wú)限極分類劃分為兩種。
首先我把數(shù)據(jù)庫(kù)表給大家看看,數(shù)據(jù)庫(kù)是tasks,數(shù)據(jù)庫(kù)表也是tasks

第一種方法(數(shù)組法)
這種方法其實(shí)是先把所有的數(shù)據(jù)查詢出來(lái),重點(diǎn)在于生成的二維數(shù)組
<?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);//遞歸調(diào)用函數(shù)
}
}
}
//數(shù)據(jù)庫(kù)連接
$dbc = mysqli_connect("localhost","root","1234","tasks");
//拼接sql語(yǔ)句
$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";
//執(zhí)行sql
$r = mysqli_query($dbc,$q);
//遍歷結(jié)果集
while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) {
//組成數(shù)組(一級(jí)鍵為parent_id,二級(jí)鍵為task_id,值為任務(wù)內(nèi)容)
$tasks[$parent_id][$task_id] = $task;
}
//打印數(shù)組
echo "<pre>";
print_r($tasks);
echo "</pre>";
make_list($tasks[0]);
echo "<pre>";
//打印縮進(jìn)數(shù)組
print_r($strArr);
echo "</pre>";
?>

運(yùn)行結(jié)果圖
第二種方法(查表法)
這種方法其實(shí)是在一開始只查詢出parent_id=0的所有任務(wù),然后采用遞歸的方式,動(dòng)態(tài)生成查詢條件,然后把每條記錄的task_id又作為task_id,這樣又進(jìn)行新一輪的查詢,知道查詢結(jié)果為空。
<?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();
//打印縮進(jìn)數(shù)組
echo "<pre>";
print_r($strArr);
echo "</pre>";
?>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例
這篇文章主要介紹了php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用,結(jié)合實(shí)例形式分析了php+mysql無(wú)限分類方法類基本定義與使用方法,需要的朋友可以參考下2020-05-05
php實(shí)現(xiàn)查詢百度google收錄情況(示例代碼)
對(duì)了貌似查google pr的東西只是file一個(gè)地址而已,如此說(shuō)了就沒有什么難度了。完整代碼如下2013-08-08
PHP IN_ARRAY 函數(shù)使用注意事項(xiàng)
其實(shí)關(guān)鍵還是因?yàn)?php是弱類型語(yǔ)言,php進(jìn)行比較的時(shí)候 最好還是使用strict方法的。因?yàn)檫@樣不但比較兩者的值是否一直,還會(huì)比較兩者的類型是否一直。2010-07-07
PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法詳解
這篇文章主要介紹了PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法,結(jié)合實(shí)例形式分析了php循環(huán)遍歷、array_diff及array_intersect函數(shù)等方法實(shí)現(xiàn)數(shù)組子集判斷的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Linux下進(jìn)行MYSQL編程時(shí)插入中文亂碼的解決方案
Linux下進(jìn)行MYSQL編程時(shí)插入中文亂碼的解決方案...2007-03-03
php 重寫分頁(yè)器 CLinkPager的實(shí)例
這篇文章主要介紹了php 重寫分頁(yè)器 CLinkPager的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
1億條數(shù)據(jù)如何分表100張到Mysql數(shù)據(jù)庫(kù)中(PHP)
這篇文章主要介紹了當(dāng)數(shù)據(jù)量猛增的時(shí)候如何把一億條數(shù)據(jù)分表100張到Mysql數(shù)據(jù)庫(kù)中,需要的朋友可以參考下2015-07-07
php實(shí)現(xiàn)比較兩個(gè)字符串日期大小的方法
這篇文章主要介紹了php實(shí)現(xiàn)比較兩個(gè)字符串日期大小的方法,涉及php日期操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05

