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 相关文章推荐
PHP中GET变量的使用
Oct 09 PHP
PHP 日常开发小技巧
Sep 23 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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 危险函数解释 分析
2009/04/22 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
python中lambda与def用法对比实例分析
2015/04/30 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
简单的python后台管理程序
2017/04/13 Python
在python中bool函数的取值方法
2018/11/01 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
简单了解Django项目应用创建过程
2020/07/06 Python
python pymysql库的常用操作
2020/10/16 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
python中spy++的使用超详细教程
2021/01/29 Python
pip install命令安装扩展库整理
2021/03/02 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
分享Python获取本机IP地址的几种方法
2022/03/17 Python