php無限極分類實(shí)現(xiàn)方法分析
本文實(shí)例講述了php無限極分類實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
今天給大家?guī)淼氖莗hp的無限極分類技術(shù),本人把無限極分類劃分為兩種。
首先我把數(shù)據(jù)庫表給大家看看,數(shù)據(jù)庫是tasks,數(shù)據(jù)庫表也是tasks
第一種方法(數(shù)組法)
這種方法其實(shí)是先把所有的數(shù)據(jù)查詢出來,重點(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ù)庫連接 $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"; //執(zhí)行sql $r = mysqli_query($dbc,$q); //遍歷結(jié)果集 while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) { //組成數(shù)組(一級鍵為parent_id,二級鍵為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é)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP擴(kuò)展之kafka安裝應(yīng)用案例詳解
這篇文章主要介紹了PHP擴(kuò)展之kafka安裝應(yīng)用案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09利用PHP內(nèi)置SERVER開啟web服務(wù)(本地開發(fā)使用)
PHP 5.4.0起, CLI SAPI 提供了一個(gè)內(nèi)置的Web服務(wù)器,這個(gè)內(nèi)置的Web服務(wù)器主要用于本地開發(fā)使用,不可用于線上產(chǎn)品環(huán)境,URI請求會(huì)被發(fā)送到PHP所在的的工作目錄Working Directory進(jìn)行處理,除非你使用了-t參數(shù)來自定義不同的目錄2020-01-01php使用strip_tags()去除html標(biāo)簽仍有空白的解決方法
這篇文章主要介紹了php使用strip_tags()去除html標(biāo)簽仍有空白的解決方法,涉及php正則替換的相關(guān)操作技巧,需要的朋友可以參考下2016-07-07PHP實(shí)現(xiàn)一維數(shù)組轉(zhuǎn)二維數(shù)組的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)一維數(shù)組轉(zhuǎn)二維數(shù)組的方法,實(shí)例分析了php操作數(shù)組的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02PHP工廠模式Factory Pattern的實(shí)現(xiàn)及特點(diǎn)
工廠模式,是一種實(shí)例化對象的方式,只要輸入需要實(shí)例化對象的名字,就可以通過工廠對象的相應(yīng)工廠函數(shù)來制造你需要的對象,工廠模式的最主要作用就是對象創(chuàng)建的封裝、簡化創(chuàng)建對象操作2023-03-03解析將多維數(shù)組轉(zhuǎn)換為支持curl提交的一維數(shù)組格式
本篇文章是對將多維數(shù)組轉(zhuǎn)換為支持curl提交的一維數(shù)組格式實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07