PHP无限级分类生成树实例代码

  分享一例php无限级分类生成树的代码,学习下php无限级分类的实现方法,有需要的朋友参考下。
 
   一段非常精简的PHP无限极分类生成树方法,巧在引用。
 
   例子,php实现无限级分类。
 
   代码示例:
 
   <?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行:
 
   代码示例:
 
   <?php
 
   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();
 
   }
 
   上面这种无限极分类数据树形结构化的方法值得借鉴。
 
   感觉这段代码实际用途并不明显啊,想取出格式化的树形数据还是要递归啊:
 
   代码示例: www.lefeng123.com
 
   /**
 
   * 如何取数据格式化的树形数据
 
   * @site <
 
   */
 
   $tree = generateTree($items);
 
   function getTreeData($tree){
 
   foreach($tree as $t){
 
   echo $t['name'].'<br>';
 
   if(isset($t['son'])){
 
   getTreeData($t['son']);
 
   }
 
   }
 
   }
 
   getTreeData($tree);
 
 

你可能感兴趣的:(PHP)