PHP递归遍历多维数组实现无限分类的方法


Posted in PHP onMay 06, 2016

本文实例讲述了PHP递归遍历多维数组实现无限分类的方法。分享给大家供大家参考,具体如下:

<?php
   //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199');
   $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国');
   $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国');
   $data[]=array('id'=>3,'parentid'=>0,'name'=>'韩国');
   $data[]=array('id'=>4,'parentid'=>1,'name'=>'北京');
   $data[]=array('id'=>5,'parentid'=>1,'name'=>'上海');
   $data[]=array('id'=>6,'parentid'=>1,'name'=>'广西');
   $data[]=array('id'=>7,'parentid'=>6,'name'=>'桂林');
   $data[]=array('id'=>8,'parentid'=>6,'name'=>'南宁');
   $data[]=array('id'=>9,'parentid'=>6,'name'=>'柳州');
   $data[]=array('id'=>10,'parentid'=>2,'name'=>'纽约');
   $data[]=array('id'=>11,'parentid'=>2,'name'=>'华盛顿');
   $data[]=array('id'=>12,'parentid'=>3,'name'=>'首尔');
   $tree=build_tree($data,0);
   //echo memory_get_usage();
   print_r($tree);
 function findChild(&$arr,$id){
  $childs=array();
  foreach ($arr as $k => $v){
   if($v['parentid']== $id){
    $childs[]=$v;
   }
  }
  return $childs;
 }
 function build_tree($rows,$root_id){
  $childs=findChild($rows,$root_id);
  if(empty($childs)){
   return null;
  }
 foreach ($childs as $k => $v){
  $rescurTree=build_tree($rows,$v['id']);
  if( null != $rescurTree){
  $childs[$k]['childs']=$rescurTree;
  }
 }
  return $childs;
 }
?>

运行结果:

Array
(
 [0] => Array
  (
   [id] => 1
   [parentid] => 0
   [name] => 中国
   [childs] => Array
    (
     [0] => Array
      (
       [id] => 4
       [parentid] => 1
       [name] => 北京
      )
     [1] => Array
      (
       [id] => 5
       [parentid] => 1
       [name] => 上海
      )
     [2] => Array
      (
       [id] => 6
       [parentid] => 1
       [name] => 广西
       [childs] => Array
        (
         [0] => Array
          (
           [id] => 7
           [parentid] => 6
           [name] => 桂林
          )
         [1] => Array
          (
           [id] => 8
           [parentid] => 6
           [name] => 南宁
          )
         [2] => Array
          (
           [id] => 9
           [parentid] => 6
           [name] => 柳州
          )
        )
      )
    )
  )
 [1] => Array
  (
   [id] => 2
   [parentid] => 0
   [name] => 美国
   [childs] => Array
    (
     [0] => Array
      (
       [id] => 10
       [parentid] => 2
       [name] => 纽约
      )
     [1] => Array
      (
       [id] => 11
       [parentid] => 2
       [name] => 华盛顿
      )
    )
  )
 [2] => Array
  (
   [id] => 3
   [parentid] => 0
   [name] => 韩国
   [childs] => Array
    (
     [0] => Array
      (
       [id] => 12
       [parentid] => 3
       [name] => 首尔
      )
    )
  )
)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
Jan 03 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
php用户注册信息验证正则表达式
Nov 12 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
php7新特性的理解和比较总结
Apr 14 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
PHP图片加水印实现方法
May 06 #PHP
php数组冒泡排序算法实例
May 06 #PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 #PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 #PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 #PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 #PHP
zen_cart实现支付前生成订单的方法
May 06 #PHP
You might like
处理php自动反斜杠的函数代码
2010/01/05 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
python要安装在哪个盘
2020/06/15 Python
python实现批量命名照片
2020/06/18 Python
python中Django文件上传方法详解
2020/08/05 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
优秀员工表扬信
2014/01/17 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
房屋买卖协议书
2014/04/10 职场文书
小学安全汇报材料
2014/08/14 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
警示教育片观后感
2015/06/17 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android