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 dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
php session的锁和并发
Jan 22 PHP
Symfony控制层深入详解
Mar 17 PHP
Yii数据库缓存实例分析
Mar 29 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
如何通过PHP实现Des加密算法代码实例
May 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
?繁体转换的class
2006/10/09 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
django-csrf使用和禁用方式
2020/03/13 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
销售文员岗位职责
2013/11/29 职场文书
中青班党性分析材料
2014/02/16 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
期末复习计划
2015/01/19 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
火烧圆明园观后感
2015/06/03 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python