php两种无限分类方法实例


Posted in PHP onApril 21, 2015

一、递归方法

$items = array(

array('id'=>1,'pid'=>0,'name'=>'一级11'),

array('id'=>2,'pid'=>0,'name'=>'一级12'),

array('id'=>3,'pid'=>1,'name'=>'二级21'),

array('id'=>4,'pid'=>3,'name'=>'三级31'),

array('id'=>5,'pid'=>1,'name'=>'二级22'),

array('id'=>6,'pid'=>3,'name'=>'三级32'),

array('id'=>7,'pid'=>6,'name'=>'四级41'),

);

$i = 0;

function formatTree($arr, $pid = 0){

$tree = array();

$temp = array();

global $i;

if($arr){

foreach($arr as $k=>$v){

if($v['pid'] == $pid){//

$temp = formatTree($arr, $v['id']);

$temp && $v['son'] = $temp;

$tree[] = $v;

}

}

}

return $tree;

}

print_r(formatTree($items));

二、非递归方法
function genTree($items) {

    $tree = array(); //格式化好的树

    foreach ($items as $item)

        if (isset($items[$item['pid']])){

            $items[$item['pid']]['son'][] = &$items[$item['id']];

        }

        else{

            $tree[] = &$items[$item['id']];

        }

    return $tree;

}
$items = array(

    1 => array('id' => 1, 'pid' => 0, 'name' => '一级11'),

    2 => array('id' => 2, 'pid' => 1, 'name' => '二级21'),

    3 => array('id' => 3, 'pid' => 1, 'name' => '二级23'),

    4 => array('id' => 4, 'pid' => 9, 'name' => '三级31'),

    5 => array('id' => 5, 'pid' => 4, 'name' => '四级43'),

    6 => array('id' => 6, 'pid' => 9, 'name' => '三级32'),

    7 => array('id' => 7, 'pid' => 4, 'name' => '四级41'),

    8 => array('id' => 8, 'pid' => 4, 'name' => '四级42'),

    9 => array('id' => 9, 'pid' => 1, 'name' => '二级25'),

    10 => array('id' => 10, 'pid' => 11, 'name' => '二级22'),

    11 => array('id' => 11, 'pid' => 0, 'name' => '一级12'),

    12 => array('id' => 12, 'pid' => 11, 'name' => '二级24'),

    13 => array('id' => 13, 'pid' => 4, 'name' => '四级44'),

    14 => array('id' => 14, 'pid' => 1, 'name' => '二级26'),

    15 => array('id' => 15, 'pid' => 8, 'name' => '五级51'),

    16 => array('id' => 16, 'pid' => 8, 'name' => '五级52'),

    17 => array('id' => 17, 'pid' => 8, 'name' => '五级53'),

    18 => array('id' => 18, 'pid' => 16, 'name' => '六级64'),

);

print_r(genTree($items));
PHP 相关文章推荐
php&java(一)
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
php 数组的一个悲剧?
May 11 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
php实现的双色球算法示例
Jun 20 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
关于php开启错误提示的总结
Sep 24 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 #PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
php实现的美国50个州选择列表实例
Apr 20 #PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 #PHP
php中使用base HTTP验证的方法
Apr 20 #PHP
You might like
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
Python 正则表达式入门(中级篇)
2016/12/07 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
python语言基本语句用法总结
2019/06/11 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
python实现高斯投影正反算方式
2020/01/17 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
超市端午节活动方案
2014/01/23 职场文书
关于旷工的检讨书
2014/02/02 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
工作会议方案
2014/05/21 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Web应用开发TypeScript使用详解
2022/05/25 Javascript
java中如何截取字符串最后一位
2022/07/07 Java/Android