無限極分類不用遞迴產生多維陣列(樹)的方法

來源:互聯網
上載者:User

標籤:src   php架構   ssi   gen   查詢   img   height   商品   code   

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

無限極分類不用遞迴產生多維陣列(樹)的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.