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 相关文章推荐
全文搜索和替换
Oct 09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
PHP 错误之引号中使用变量
May 04 PHP
php 常用类整理
Dec 23 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 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 xfocus防注入资料
2008/04/27 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
Js组件的一些写法
2010/09/10 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
自荐信的禁忌和要点
2013/10/15 职场文书
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
董事长秘书工作职责
2014/06/10 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2014年除四害工作总结
2014/12/06 职场文书
就业意向书范本
2015/05/11 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python