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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
php str_pad 函数使用详解
Jan 13 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
yii通过小物件生成view的方法
Oct 08 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 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实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Vue使用NProgress进度条的方法
2019/09/21 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Python切片用法实例教程
2014/09/08 Python
python网络编程之文件下载实例分析
2015/05/20 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
python3.7 的新特性详解
2019/07/25 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
python实现计算图形面积
2021/02/22 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
毕业生的自我评价
2013/12/30 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
我的长生果教学反思
2014/04/28 职场文书
综艺节目策划方案
2014/06/13 职场文书
地球一小时活动总结
2015/02/27 职场文书
司机个人年终总结
2015/03/03 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
python通配符之glob模块的使用详解
2021/04/24 Python
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python