資源描述:
《php無(wú)限遞歸查詢(xún)分類(lèi)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、無(wú)限遞歸查詢(xún)分類(lèi)工作理解1.首先我們來(lái)看一下foreach循環(huán)是什么意思,如果你懂foreach就可以跳過(guò)此步了。開(kāi)始的時(shí)候我也不理解foreach循環(huán)遍歷數(shù)組是什么東西,廢話(huà)少說(shuō),我們進(jìn)入主題。我們先看一下,下面這個(gè)一維數(shù)組,一維數(shù)組就不用說(shuō)了吧$a=array('零','一','二','三','四','無(wú)','六','七','八','九');//看一下三種輸出,你應(yīng)該明白了,foreach遍歷數(shù)組應(yīng)該是干什么了吧!其實(shí)也就是把數(shù)組中的值給弄出來(lái)而已,當(dāng)然你也可以用echo一個(gè)一個(gè)的給輸出出來(lái),只要你有勁,foreach就簡(jiǎn)單幾句話(huà)搞定??赐阥oreach我們真正進(jìn)入主題,看一下無(wú)限遞歸到底
2、是怎樣工作的。functiongetsort($table,$parent_id=0,$t=-1){$t++;global$temp;$sql="SELECT*FROM`$table`WHERE`parent_id`=$parent_idORDERBY`sort_id`";$query=mysql_query($sql);$data=array();while($res=mysql_fetch_assoc($query))//循環(huán)出父級(jí)分類(lèi){$data[]=$res;}if(!empty($data)){foreach($dataas$key=>$val){$val['sort_name']=
3、str_repeat(' ',$t*3).'
4、--'.$val['sort_name'];$temp[]=$val;getsort($table,$val['sort_id'],$t);}}return$temp;}看上面的while循環(huán),當(dāng)while循環(huán)完成以后,告訴我$data這個(gè)二維數(shù)組里面存的是什么?當(dāng)然是一個(gè)二維數(shù)組了,而且是parent_id=0的所有數(shù)據(jù),也就是第一級(jí)分類(lèi)了。如下圖:再來(lái)看看下面這一段程序if(!empty($data))//如果$date里面不為空,即里面有數(shù)據(jù),就會(huì)執(zhí)行下面的foreach循環(huán){foreach($dataas$key=>$val){$
5、val['sort_name']=str_repeat(' ',$t*3).'
6、--'.$val['sort_name'];$temp[]=$val;//把變形的sort_name在注入一個(gè)數(shù)組里getsort($table,$val['sort_id'],$t);}}首先$data不為空吧,那么foreach循環(huán)就會(huì)執(zhí)行了,1.foreach首先取出一條數(shù)據(jù)即$data[0],注意看上圖也就是sort_id=1的所有數(shù)據(jù)2.把sort_id=1的這條數(shù)據(jù)里的sort_name值給變化一下,方便做出階梯效果的分類(lèi)。3.把變形的sort_name在注入一個(gè)數(shù)組里。4.然后調(diào)用自己get
7、sort,關(guān)鍵就在這個(gè)地方,好多人剛開(kāi)始不理解,我剛開(kāi)始也很不理解關(guān)鍵就在下面接下來(lái)做什么?看它是怎么調(diào)用自己的,注意它調(diào)用自己時(shí),傳過(guò)去的id是$val[‘sort_id’];也就是說(shuō),下一次要查詢(xún)的是parent_id=1的所有數(shù)據(jù)是吧?5.最繞人的地方就是下面的解釋?zhuān)?.第4部調(diào)用自己,去查詢(xún)sort_id=1的所有子分類(lèi),和上面一樣的循環(huán)過(guò)程。foreach首先取出的是第一條數(shù)據(jù),后面是不是還有4條數(shù)據(jù)沒(méi)有循環(huán)。當(dāng)sort_id=1下面的所有分類(lèi)查詢(xún)完以后,接著取出第二條數(shù)據(jù),也就是$data[1],注意看上圖也就是sort_id=2的所有數(shù)據(jù),接著就是重復(fù)上面的動(dòng)作。7.還有一種比較
8、好的理解方法,當(dāng)它調(diào)用自己時(shí)即getsort($table,$val['sort_id'],$t);把這句話(huà)替換成getsort()函數(shù)它本身,就容易理解多了??赡芪医忉尩倪€不夠清楚,不知到你是否理解了。調(diào)用一下這個(gè)函數(shù),然后循環(huán)一下就是下圖這個(gè)樣子$a=getsort('article_sort');foreach($aas$key=>$val){echo'
';echo$val['sort_name'];}