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二维数组用键名分组相加实例函数
Nov 06 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
PHP常用的缓存技术汇总
May 05 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
PHP 文件上传限制问题
Sep 01 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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程序的方法小结
2012/02/23 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Yii框架安装简明教程
2020/05/15 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
python读写LMDB文件的方法
2018/07/02 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
GMP办公室主任岗位职责
2014/03/14 职场文书
在校实习生求职信
2014/06/18 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
收入证明怎么写
2015/06/12 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
Pytest中skip skipif跳过用例详解
2021/06/30 Python
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers