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 相关文章推荐
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
使用php来实现网络服务
Sep 15 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
基于PHP开发中的安全防范知识详解
Jun 06 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
PHP数据库操作Helper类完整实例
May 11 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 mssql 数据库分页SQL语句
2008/12/16 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
PHP中常用的转义函数
2014/02/28 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php简单smarty入门程序实例
2015/06/11 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
python实现图片批量压缩程序
2018/07/23 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
《童年》教学反思
2014/02/18 职场文书
早会主持词
2014/03/17 职场文书
2014组织生活会方案
2014/05/19 职场文书
创新社会管理心得体会
2014/09/12 职场文书
2014年行政部工作总结
2014/11/19 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
师德师风学习材料
2014/12/19 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
2015年采购员工作总结
2015/04/27 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript