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 相关文章推荐
apache+php+mysql安装配置方法小结
Aug 01 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP内存使用情况如何获取
Oct 10 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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在线解压ZIP文件的方法
2014/12/30 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
python在非root权限下的安装方法
2018/01/23 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
几个SQL的面试题
2014/03/08 面试题
家长对老师的感言
2014/03/11 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
英文感谢信范文
2015/01/21 职场文书
获奖感言一句话
2015/07/31 职场文书
九年级化学教学反思
2016/02/22 职场文书