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 excel类 phpExcel使用方法介绍
Aug 21 PHP
解析PHP 5.5 新特性
Jul 02 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
PHP常用的小程序代码段
Nov 14 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
Feb 09 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 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的access操作类
2008/04/09 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
使用python遍历指定城市的一周气温
2017/03/31 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python random模块的使用示例
2020/10/10 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
品管员岗位职责
2013/11/10 职场文书
物流专业求职计划书
2014/01/10 职场文书
品牌推广策划方案
2014/05/28 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
工作建议书范文
2019/07/08 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS