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 相关文章推荐
MySQL 日期时间函数常用总结
Jun 12 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
php的sso单点登录实现方法
Jan 08 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
php微信公众号js-sdk开发应用
Nov 28 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 cookie 登录验证示例代码
2009/03/16 PHP
php实现微信支付之企业付款
2018/05/30 PHP
javascript 数组的方法集合
2008/06/05 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
百度地图api如何使用
2015/08/03 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
php 修改密码实现代码
2017/05/24 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
中英双版中文教师求职信
2013/10/27 职场文书
售后专员岗位职责
2013/12/08 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python