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函数解决SQL injection
Oct 09 PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
PHP文件操作方法汇总
Jul 01 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
第九节 绑定 [9]
2006/10/09 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
js+css实现导航效果实例
2015/02/10 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
在Windows8上的搭建Python和Django环境
2014/07/03 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python 12306抢火车票脚本
2018/02/07 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
办公室助理岗位职责
2013/12/25 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
我的画教学反思
2014/04/28 职场文书
法制宣传标语
2014/06/23 职场文书
挂职个人工作总结
2015/03/05 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
python glom模块的使用简介
2021/04/13 Python