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 远程图片保存到本地的函数类
Dec 08 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP的5个安全措施小结
Jul 17 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Python如何发布程序的详细教程
2018/10/09 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
收银员岗位职责
2014/02/07 职场文书
体育节口号
2014/06/19 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
保研专家推荐信范文
2015/03/25 职场文书
公司更名通知函
2015/04/24 职场文书
道歉的话语大全
2015/05/12 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
vue实现登陆页面开发实践
2022/05/30 Vue.js