$arr = array(
0=>array('id'=>1,'pid'=>0,'name'=>'亞洲'),
1=>array('id'=>2,'pid'=>0,'name'=>'北美洲'),
2=>array('id'=>3,'pid'=>1,'name'=>'中國'),
3=>array('id'=>4,'pid'=>2,'name'=>'美國'),
4=>array('id'=>5,'pid'=>3,'name'=>'北京'),
5=>array('id'=>6,'pid'=>3,'name'=>'上海'),
6=>array('id'=>7,'pid'=>5,'name'=>'海淀區'),
);function getsons($arr,$id=0)
} return $temp;
}var_dump( getsons($arr,0));
**解析:
第一次迴圈的時候,肯定是亞洲符合條件,所以亞洲會被存入臨時陣列。注意這時第一層迴圈並不會繼續執行下去,因為我們這個時候要去查詢亞洲還有沒有子孫。通過呼叫自身,再次進入第二層迴圈,這次我們找到了中國,找到中國後,第二層又會被打斷,進入第三層,找到了北京,第三層被打斷,進入第四層,找到了海淀,第四層被打斷,進入第五層,找海淀的子孫,通過遍歷陣列可知,海淀並沒有子孫。第五層會繼續執行下去,就是最後一句return tem
p。這個
函式的返
回值會返
回到第四
層中呼叫
他的地方
,當然這
裡的temp。這個函式的返回值會返回到第四層中呼叫他的地方,當然這裡的
temp。這
個函式的
返回值會
返回到第
四層中調
用他的地
方,當然
這裡的temp是個空陣列。第四層會繼續執行下去,tem
p裡此時
包含海淀
,返回到
第三層,
temp裡此時包含海淀,返回到第三層,
temp裡此
時包含海
澱,返回
到第三層
,temp裡包含了北京和海淀,以此類推,第二層中國,北京,海淀,第一層亞洲,中國,北京,海淀。到此時第一層迴圈繼續執行下去,會找到和亞洲平級的北美洲,北美洲又會通過遞迴查詢自己的子孫,一層一層巢狀執行下去。
注意:每次函式遞迴呼叫的時候,$temp都會被初始化,這樣儲存的資料就會丟失,所以要用array_merge函式把兩個陣列的資料整合在一起。
遞迴**:
PHP遞迴實現無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴...
PHP實現遞迴無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。遞迴,簡單的說就是一段程式 的重複呼叫,當把 寫到乙個自定義函式中,將引數等變數儲存,函式中重複呼叫函式,直到達到某個條件才跳出...
PHP遞迴實現無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴...