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 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP二维数组去重实例分析
Nov 18 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 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
linux中cd命令使用详解
2015/01/08 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
javascript生成大小写字母
2015/07/03 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
清除输入框内的空格
2016/12/21 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Python查找相似单词的方法
2015/03/05 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
django最快程序开发流程详解
2019/07/19 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
市场部经理岗位职责
2014/04/10 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
践行三严三实心得体会
2014/10/13 职场文书
2014年学生工作总结
2014/11/20 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
环境卫生标语
2015/08/03 职场文书