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 全局变量范围分析
Aug 07 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 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操作redis缓存方法分享
2015/06/03 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
大学生最新职业生涯规划书范文
2014/01/12 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
党员组织关系介绍信
2014/02/13 职场文书
教师演讲稿大全
2014/05/16 职场文书
小学亲子活动总结
2014/07/01 职场文书
2014年共青团工作总结
2014/12/10 职场文书
六年级学生评语大全
2014/12/26 职场文书
测量员岗位职责
2015/02/14 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS