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连mysql和oracle数据库性能比较
Oct 09 PHP
PHP SQLite类
May 07 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
php中session退出登陆问题
Feb 27 PHP
php之curl设置超时实例
Nov 03 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php常量详细解析
Oct 27 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php学习 函数 课件
2008/06/15 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
JS中==与===操作符的比较
2009/03/21 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python 两个数据库postgresql对比
2019/10/21 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
活动总结怎么写
2014/04/28 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
公司证明怎么写
2014/09/22 职场文书
集结号观后感
2015/06/08 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
React实现动效弹窗组件
2021/06/21 Javascript