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 相关文章推荐
8个必备的PHP功能实例代码
Oct 27 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
thinkphp中空模板与空模块的用法实例
Nov 26 PHP
PHP实现远程下载文件到本地
May 17 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
php中的常用魔术方法汇总
Feb 14 PHP
PHP中header用法小结
May 23 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
php查看一个变量的占用内存的实例代码
Mar 29 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
JavaScript全局函数使用简单说明
2011/03/11 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python的Template使用指南
2014/09/11 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
中学教师师德师风演讲稿
2014/08/22 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
中学图书馆工作总结
2015/08/11 职场文书
教师远程培训心得体会
2016/01/09 职场文书
《雷雨》教学反思
2016/02/20 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python