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
其他功能
Oct 09 PHP
php Http_Template_IT类库进行模板替换
Mar 19 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP计算近1年的所有月份
Mar 13 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
Laravel下生成验证码的类
2017/11/15 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
js 函数调用模式小结
2011/12/26 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
Python splitlines使用技巧
2008/09/06 Python
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
5款非常棒的Python工具
2018/01/05 Python
python进行两个表格对比的方法
2018/06/27 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
《日月潭》教学反思
2014/02/28 职场文书
优秀广告词大全
2014/03/19 职场文书
詹天佑教学反思
2014/04/30 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书