分享一例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);

最新文章

  1. python网络编程学习笔记(三):socket网络服务器(转载)
  2. wcf测试证书的创建
  3. 【visio 2007操作】
  4. Android手机编程初学遇到的问题及解决方法
  5. 来抢你们IT狗的饭碗了
  6. torch基本操作
  7. 修改webftp,在线文件管理
  8. HTML一些小细节
  9. mongodb新手扫盲
  10. node.js之第一天
  11. 机器学习类别不平衡处理之欠采样(undersampling)
  12. 转:使用 Go-Ethereum 1.7.2搭建以太坊私有链
  13. URL Encode
  14. 程序员与HR博弈之:有城府的表达你的兴趣爱好
  15. Tomcat 部署一工程时Deploy Location 为什么 是 INVALID
  16. thinkphp相关
  17. 4D产品(DLG、DEM、DOM、DRG)介绍及区别
  18. BZOJ3142 [Hnoi2013]数列 【组合数学】
  19. 打通版微社区(2):服务器部署MySql数据库 For DZ3.2
  20. Oracle日常性能查看

热门文章

  1. 使用 Maven 部署 artifact 到 Nexus 教程
  2. SuppressWarnings的警告
  3. vector的含义
  4. Android Application对象必须掌握的七点
  5. atitit.提升研发效率的利器---重型框架与类库的差别与设计原则
  6. Cocos2dx 多线程
  7. redis 控制调用频率
  8. ShareSDK 社会化分享 集成步骤
  9. hdu 2218
  10. java 线程池用法