當前位置:首頁 > PHP教程 > php應用 > 列表

php 無限級分類 獲取頂級分類ID

發布:smiling 來源: PHP粉絲網  添加日期:2019-11-26 10:57:28 瀏覽: 評論:0 

有這樣一個表,id是分類的ID,name是分類名稱,pid是上級分類的ID。

現在有個分類ID,程序要找到它上級的上級的上級……分類的ID,簡單說就是找出頂級分類的ID。

比如“新鮮水果”的ID是13,對應父類ID是5,而5的父ID是1,1沒有父類,也就是頂級分類了。

以前年輕氣盛不懂事,總想著用遞歸來查找,然后再將結果緩存來解決性能問題。

后來又試過將整個表緩存起來,再遞歸查找。

再后來……似乎比較少有機會遇到無限級分類……

最近有個同事問我怎么“優雅”的解決這個問題。

于是我靈機一動,就有了如下解決方案:

  1. <?php 
  2.  
  3. $sql = "select id, pid from tablename "
  4.  
  5. // 查詢后 將結果處理成 如下數組格式 
  6.  
  7. $arr = [ 
  8.  
  9.   // id => pid 
  10.  
  11.   1 => 0, 
  12.  
  13.   // 省略... 
  14.  
  15.   5 => 1, 
  16.  
  17.   // 省略... 
  18.  
  19.   13 => 5 
  20.  
  21. ]; 
  22.  
  23. // 建議將這數組緩存起來 
  24.  
  25. //phpfensi.com 
  26.  
  27. $id = 13; 
  28.  
  29. while($arr[$id]) { 
  30.  
  31.   $id = $arr[$id]; 
  32.  
  33.  
  34. echo $id// 1 

不得不說:真是太優雅了!連我都佩服我自己了,同事更是五體投地,痛哭流涕。

因為他寫了幾十行循環再判斷再遞歸的代碼,被我用兩行代碼替換了……

Tags: php無限級分類 php頂級分類

分享到:

广西快3最大遗漏值统计表