今天氣哥發了一個無限極分類,沒有用遞歸的例子。看了一下不錯。。
理解:1、創建$tree用於存儲頂級分類即$pid=0的分類引用。
2、創建$list數組的引用數組$refer存儲$list引用
3、循環$list數組:這裏做了兩件事,一個是過濾出頂級分類引用賦值給$tree,二是,判斷出非頂級分類,然後根據該分類的父級id在$refer中找到該分類的父級分類,把當前分類的引用賦值給當前父級分類的子數組。
4、因爲傳遞過程都是用引用傳遞所以當循環結束所有分類都會被處理,返回的$tree就已經包含所有分類的樹形數組了。
追加一個關於引用比較有意思的問題:
解釋:其實就是第一次循環的時候$value的引用已經指向了$arr的最後一位。循環默認沒次循環指針加1。這時候如果用unset釋放變量就安全了。第二次循環$value沒有復位,所以纔會有如此結果。