PHP 根据key 给二维数组分组


Posted in PHP onDecember 09, 2016

我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组。

先来看以下数组,

Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[type] => 分组1
[ctime] => 2016-12-02 11:39:34
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[type] => 分组1
[ctime] => 2016-12-12 11:39:50
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[type] => 分组2
[ctime] => 2016-12-02 11:40:01
)
[3] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[type] => 分组2
[ctime] => 2016-12-07 10:21:40
)
[4] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[type] => 分组2
[ctime] => 2016-12-07 10:21:51
)
[5] => Array
(
[id] => 6
[wo_id] => 2
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:21:56
)
[6] => Array
(
[id] => 7
[wo_id] => 4
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:22:10
)
)

这里是一个很典型的例子,如果我希望把 数组中的数据 根据 type(分组) 分开处理,如果不分组,可能循环上会非常冗余,所以有了下面的一个分组函数:

public static function array_group_by($arr, $key)
{
$grouped = [];
foreach ($arr as $value) {
$grouped[$value[$key]][] = $value;
}
// Recursively build a nested grouping if more parameters are supplied
// Each grouped array value is grouped according to the next sequential key
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $parms);
}
}
return $grouped;
}

$arr : 二维数组

$key: 需要分组的key

得到的结果是:

Array
(
[分组2] => Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[ctime] => 2016-12-02 11:39:34
[type] => 分组2
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[ctime] => 2016-12-12 11:39:50
[type] => 分组2
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[ctime] => 2016-12-02 11:40:01
[type] => 分组2
)
)
[分组1] => Array
(
[0] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[ctime] => 2016-12-07 10:21:40
[type] => 分组1
)
[1] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[ctime] => 2016-12-07 10:21:51
[type] => 分组1
)
)
)

以上所述是小编给大家介绍的PHP 根据key 给二维数组分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
默默小谈PHP&MYSQL分页原理及实现
Jan 02 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 PHP
PHP遍历数组的6种方式总结
Nov 17 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 #PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 #PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 #PHP
Zend Framework实现自定义过滤器的方法
Dec 09 #PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 #PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 #PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 #PHP
You might like
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
php,ajax实现分页
2008/03/27 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
php析构函数的简单使用说明
2015/08/24 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
vue实现购物车案例
2020/05/30 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
大学生个人求职信范文
2013/09/21 职场文书
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
运动会通讯稿400字
2014/01/28 职场文书
学生感冒英文请假条
2014/02/04 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
员工教育培训协议书
2014/09/27 职场文书
销售2014年度工作总结
2014/12/08 职场文书
环保证明
2015/06/23 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫