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访问查询mysql数据的三种方法
Oct 09 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
php数字游戏 计算24算法
Jun 10 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 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
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
javascript 精粹笔记
2010/05/09 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
纯JS实现轮播图
2017/02/22 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
Python中常见的数据类型小结
2015/08/29 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
python判断变量是否为列表的方法
2020/09/17 Python
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
药品营销专业毕业生自荐信
2014/07/02 职场文书
国庆节标语大全
2014/10/08 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers