數組是
`Array
(
[0] => Array ( [id] => 1 [pid] => 0 [name] => 安徽省 [son] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [name] => 合肥市 [son] => Array ( [0] => Array ( [id] => 4 [pid] => 3 [name] => 長豐縣 ) ) ) [1] => Array ( [id] => 5 [pid] => 1 [name] => 安慶市 ) ) )[1] => Array ( [id] => 2 [pid] => 0 [name] => 浙江省 )
)`
然後我把他們列出來 很傻瓜的寫法 只能輸出三級迴圈
foreach(上面的數組 as $row) { echo $row['id']; echo $row['name']; if(isset($row['son'])){ foreach($row['son'] as $k => $v){ echo $v['id']; echo $v['name']; if(isset($v['son'])){ foreach($v['son'] as $m => $n){ echo $n['id']; echo $n['name']; } } } } }
這樣寫效率不好吧?
如何簡化寫法?或者無限迴圈。。。
回複內容:
數組是
`Array
(
[0] => Array ( [id] => 1 [pid] => 0 [name] => 安徽省 [son] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [name] => 合肥市 [son] => Array ( [0] => Array ( [id] => 4 [pid] => 3 [name] => 長豐縣 ) ) ) [1] => Array ( [id] => 5 [pid] => 1 [name] => 安慶市 ) ) )[1] => Array ( [id] => 2 [pid] => 0 [name] => 浙江省 )
)`
然後我把他們列出來 很傻瓜的寫法 只能輸出三級迴圈
foreach(上面的數組 as $row) { echo $row['id']; echo $row['name']; if(isset($row['son'])){ foreach($row['son'] as $k => $v){ echo $v['id']; echo $v['name']; if(isset($v['son'])){ foreach($v['son'] as $m => $n){ echo $n['id']; echo $n['name']; } } } } }
這樣寫效率不好吧?
如何簡化寫法?或者無限迴圈。。。
騷年,凡事先搜尋,學會自己解決問題。
5行代碼不遞迴解決無限分類:http://www.oschina.net/code/snippet_173183_11767
不是打廣告啊,只是覺得個人總結得還不錯:
PHP無限極分類實現【簡單版】
您這目前只能輸出3級啊,無限級的就需要使用遞迴了。只能給你來個思路了,具體的百度一下你就知道。
如果是為了代碼更易讀、易維護,建議使用組合模式,如果只是要高效的輸出,@cevin 給出的答案已經足夠了