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
笑谈配置,使用Smarty技术
Jan 04 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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桌面中心(二) 数据库写入
2007/03/11 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
用Python实现随机森林算法的示例
2017/08/24 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python获取引用对象的个数方式
2019/12/20 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
python/golang 删除链表中的元素
2020/09/14 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
高二物理教学反思
2014/02/08 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
大学军训感言200字
2014/02/26 职场文书
离婚协议书范文
2015/01/26 职场文书
顶岗实习协议书
2015/01/29 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书