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创建动态图像
Oct 09 PHP
php IP及IP段进行访问限制的代码
Dec 17 PHP
php 无法载入mysql扩展
Mar 12 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP中数组转换为SimpleXML教程
Jan 27 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
PHP中类与对象功能、用法实例解读
Mar 27 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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实现的分解质因数操作示例
2018/08/01 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Python将一个Excel拆分为多个Excel
2018/11/07 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python中tab键是什么意思
2020/06/18 Python
Python descriptor(描述符)的实现
2020/11/15 Python
Python实现自动整理文件的脚本
2020/12/17 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
安全资金保障制度
2014/01/23 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers