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

PHP超牛逼無限極分類生成樹方法

編輯:關於PHP編程

       這篇文章主要介紹了PHP超牛逼無限極分類生成樹方法,本文巧用PHP中的引用實現樹的生成方法,比遞歸方法高端多了,需要的朋友可以參考下

      你還在用浪費時間又浪費內存的遞歸遍歷無限極分類嗎,看了該篇文章,我覺得你應該換換了。

      這是我在OSChina上看到的一段非常精簡的PHP無限極分類生成樹方法,巧在引用,整理分享了。

      代碼如下:

      function generateTree($items){

      $tree = array();

      foreach($items as $item){

      if(isset($items[$item['pid']])){

      $items[$item['pid']]['son'][] = &$items[$item['id']];

      }else{

      $tree[] = &$items[$item['id']];

      }

      }

      return $tree;

      }

      $items = array(

      1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),

      2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),

      3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),

      4 => array('id' => 4, 'pid' => 3, 'name' => '長豐縣'),

      5 => array('id' => 5, 'pid' => 1, 'name' => '安慶市'),

      );

      print_r(generateTree($items));

      可以看到下面打印的結果:

      復制代碼 代碼如下:

      Array

      (

      [0] => Array

      (

      [id] => 1

      [pid] => 0

      [name] => 安徽省

      [son] => Array

      (

      [0] => Array

      (

      [id] => 3

      [pid] => 1

      [name] => 合肥市

      [son] => Array

      (

      [0] => Array

      (

      [id] => 4

      [pid] => 3

      [name] => 長豐縣

      )

      )

      )

      [1] => Array

      (

      [id] => 5

      [pid] => 1

      [name] => 安慶市

      )

      )

      )

      [1] => Array

      (

      [id] => 2

      [pid] => 0

      [name] => 浙江省

      )

      )

      上面生成樹方法還可以精簡到5行:

      復制代碼 代碼如下:

      function generateTree($items){

      foreach($items as $item)

      $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];

      return isset($items[0]['son']) ? $items[0]['son'] : array();

      }

      上面這種無限極分類數據樹形結構化的方法值得借鑒。但是我覺得這段代碼實際用途並不明顯啊,你想取出格式化的樹形數據還是要遞歸啊:

      復制代碼 代碼如下:

      /**

      * 如何取數據格式化的樹形數據

      */

      $tree = generateTree($items);

      function getTreeData($tree){

      foreach($tree as $t){

      echo $t['name'].'
    ';

      if(isset($t['son'])){

      getTreeData($t['son']);

      }

      }

      }

      getTreeData($tree);

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