無限極分類不用遞歸生成多維數組(樹)的方法


  最近在項目中碰到的一個實際問題:后台商品分類用的是無限極方法(如圖1所示),

(圖1)

現在前台要根據分類遍歷出三級導航(效果如圖2所示),

(圖2)

需要把查詢出來的數據處理成多維數組,方便前台用多個foreach嵌套遍歷。
  網上多方搜集資料、經過驗證成功后,記錄解決方案如下:
  1、從數據庫查詢出所有數據(項目用的ThinkPHP框架);

  2、對數據進行初步處理,使二維數組的“鍵”與三維數組的id相等,將數據存入新數組$tmp;

1   $info = D('classify')->select();
2     foreach($info as $key=>$val){ 3     $tmp[$val['id']] = $info[$key]; 4   }

  3、調用generateTree() 方法把 $tmp 數組轉換成對應的多維數組(打印結果如圖3所示);

 1     /**
 2      * @param  [array] $items [需要處理的數組]
 3      * @return [array]        [多維數組]
 4      */
 5     function generateTree($items)
 6  { 7 $tree = array(); 8 foreach($items as $item){ 9 if(isset($items[$item['pid']])){ 10 $items[$item['pid']]['son'][] = &$items[$item['id']]; 11 }else{ 12 $tree[] = &$items[$item['id']]; 13  } 14  } 15 return $tree; 16 }

  4、將處理后的數據渲染到前台遍歷。

(圖3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM