最近在項目中碰到的一個實際問題:後台商品分類用的是無限極方法(如圖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)