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 25 PHP
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
浅析PHP数据导出知识点
Feb 17 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
10条php编程小技巧
2015/07/07 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
Python下singleton模式的实现方法
2014/07/16 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
社区工作者思想汇报
2014/01/13 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript