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连接SQLServer2005 的问题解决方法
Jul 19 PHP
基于xcache的配置与使用详解
Jun 18 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
Php中使用Select 查询语句的实例
Feb 19 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php查看网页源代码的方法
Mar 13 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP简单实现模拟登陆功能示例
Sep 15 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 DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
newxtree.js代码
2007/03/13 Javascript
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
分享vue里swiper的一些坑
2018/08/30 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
pandas多级分组实现排序的方法
2018/04/20 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
网络安全方面的面试题
2015/11/04 面试题
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
MySQL系列之四 SQL语法
2021/07/02 MySQL