php 無限分類如何簡化?

來源:互聯網
上載者:User
數組是
`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 給出的答案已經足夠了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.