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 strtok()函数的优点分析
Mar 02 PHP
php防盗链的常用方法小结
Jul 02 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 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来写记数器(详细介绍)
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
React快速入门教程
2017/01/17 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
python求绝对值的三种方法小结
2019/12/04 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
三好学生自我鉴定
2013/12/17 职场文书
欢送退休感言
2014/02/08 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
2014年清明节寄语
2014/04/03 职场文书
经营管理策划方案
2014/05/22 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
学生安全责任书模板
2014/07/25 职场文书
基层工作经验证明样本
2014/11/16 职场文书
小学运动会入场口号
2015/12/24 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
浅谈Redis缓冲区机制
2022/06/05 Redis