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伪静态页面函数附使用方法
Jun 20 PHP
php自动加载的两种实现方法
Jun 21 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php实现的CSS更新类实例
Sep 22 PHP
php中动态修改ini配置
Oct 14 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
php 无限级分类 获取顶级分类ID
Mar 13 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
Javascript typeof 用法
2008/12/28 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python之re操作方法(详解)
2017/06/14 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python3.x上post发送json数据
2018/03/04 Python
python将回车作为输入内容的实例
2018/06/23 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
营销专业应届生求职信
2013/11/26 职场文书
写求职信有什么意义
2014/02/17 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
会计员岗位职责
2014/03/15 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python