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中的一个中文字符串截取函数
Feb 14 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
浅析is_writable的php实现
Jun 18 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php批量删除超链接的实现方法
Oct 19 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
Ajax基础知识详解
2017/02/17 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
在Python的Django框架中创建和使用模版
2015/07/15 Python
python实现发送邮件功能
2017/07/22 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python能开发游戏吗
2020/06/11 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
保健品市场营销方案
2014/03/31 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
门球健将观后感
2015/06/16 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
基于Redis延迟队列的实现代码
2021/05/13 Redis