// 遍歷父id下所有資料
function getson($parent_id = 0, $t = - 1)
}return $temp;
}if ($_session['uid'] != 1)
if(!empty($data)) }
return $temp;
}看上面的while迴圈,當while迴圈完成以後,告訴我$data這個二維陣列裡面存的是什麼?當然是乙個二維陣列了,而且是parent_id=0的所有資料,也就是第一級分類了。如下圖:
再來看看下面這一段程式
if(!empty($data))//如果$date裡面不為空,即裡面有資料,就會執行下面的foreach迴圈 }
首先$data不為空吧,那麼foreach迴圈就會執行了,
foreach首先取出一條資料即$data[0],注意看上圖也就是sort_id=1的所有資料
把sort_id=1的這條資料裡的sort_name值給變化一下,方便做出階梯效果的分類。
把變形的sort_name在注入乙個陣列裡。
然後呼叫自己getsort,關鍵就在這個地方,好多人剛開始不理解,我剛開始也很不理解
關鍵就在下面接下來做什麼?看它是怎麼呼叫自己的,注意它呼叫自己時,傳過去的id是$val[『sort_id』];也就是說,下一次要查詢的是parent_id=1的所有資料是吧?
最繞人的地方就是下面的解釋:
第4部呼叫自己,去查詢sort_id=1的所有子分類,和上面一樣的迴圈過程。foreach首先取出的是第一條資料,後面是不是還有4條資料沒有迴圈。當sort_id=1下面的所有分類查詢完以後,接著 取出第二條資料,也就是$data[1],注意看上圖也就是sort_id=2的所有資料,接著就是重複上面的動作。
還有一種比較好的理解方法,當它呼叫自己時即getsort($table,$val['sort_id'],$t);把這句話替換成getsort()函式它本身,就容易理解多了。
可能我解釋的還不夠清楚,不知到你是否理解了。
呼叫一下這個函式,然後迴圈一下就是下圖這個樣子
$a = getsort('article_sort');
foreach ($a as $key => $val )
php無限極分類以及遞迴 thinkphp
php無限極分類 無限極分類重點在於表的設計 1在model中 class catmodel extends model public function gettree parent id 0,lev 0 return tree 2在controller中 class goodscontroller...
無限分類 遞迴
在所有欄目 地區等 下拉列表中,這個類非常好用。具有這個結構的陣列,不是這樣的話,可以改類的實現 list array 1 array id 1 pid 0,name 一級欄目一 2 array id 2 pid 0,name 一級欄目二 3 array id 3 pid 1,name 二級欄目一 ...
無限級遞迴
無限級遞迴 例一 public function recursion public function cate info,child,pid return child 返回生成的樹形陣列 例二 public function recursion public function cate info,c...