程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 無限極分類不用遞歸生成多維數組(樹)的方法,遞歸多維

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

編輯:關於PHP編程

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


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved