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 相关文章推荐
substr()函数中文版
Oct 09 PHP
用PHP4访问Oracle815
Oct 09 PHP
基于mysql的论坛(6)
Oct 09 PHP
php zend 相对路径问题
Jan 12 PHP
php中全局变量global的使用演示代码
May 18 PHP
浅析php创建者模式
Nov 25 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP中的session安全吗?
Jan 22 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
PHP数组常用函数实例小结
Aug 20 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
php获取是星期几的的一些常用姿势
Dec 15 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
基于initPHP的框架介绍
2013/04/18 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python实现简单的语音识别系统
2017/12/13 Python
python实现ID3决策树算法
2017/12/20 Python
python实现淘宝秒杀脚本
2020/06/23 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
Java里面如何创建一个内部类的实例
2015/01/19 面试题
Android面试题附答案
2014/12/08 面试题
金士达面试非笔试
2012/03/14 面试题
电气自动化大学生求职信
2013/10/16 职场文书
质检员岗位职责
2013/12/17 职场文书
学校评语大全
2014/05/06 职场文书
学校与家长安全责任书
2014/07/23 职场文书
目标责任书格式
2014/07/28 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Python 中 Shutil 模块详情
2021/11/11 Python
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
全新239军机修复记
2022/04/05 无线电