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之第二天
Oct 09 PHP
[转帖]PHP世纪万年历
Dec 06 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
preg_match_all使用心得分享
Jan 31 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
php静态文件生成类实例分析
Jan 03 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
PHP7 参数处理机制修改
Mar 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 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
浅谈Python __init__.py的作用
2020/10/28 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
金融专业大学生自我评价
2014/01/09 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
大学新闻系求职信
2014/06/03 职场文书
婚宴来宾致辞
2015/07/28 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS