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之第五天
Oct 09 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
fgetcvs在linux的问题
Jan 15 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
php如何实现数据库的备份和恢复
Nov 30 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
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
Script的加载方法小结
2011/01/12 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
React Hooks的深入理解与使用
2018/11/12 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
Python中collections模块的基本使用教程
2018/12/07 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
Python threading的使用方法解析
2019/08/28 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
Ejb技术面试题
2015/04/29 面试题
财政局长自荐信范文
2013/12/22 职场文书
企业精神口号
2014/06/11 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
收款授权委托书
2014/10/02 职场文书
2014个人年度工作总结
2014/12/15 职场文书
体检通知范文
2015/04/21 职场文书
毕业论文致谢词
2015/05/14 职场文书
增值税发票丢失证明
2015/06/19 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android