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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
PHP中使用BigMap实例
Mar 30 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
php并发加锁示例
Oct 17 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
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 分页函数multi() discuz
2009/06/21 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
python 域名分析工具实现代码
2009/07/15 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python中的filter()函数的用法
2015/04/27 Python
八大排序算法的Python实现
2021/01/28 Python
python实现解数独程序代码
2017/04/12 Python
用python实现百度翻译的示例代码
2018/03/09 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python中的asyncio代码详解
2019/06/10 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python3.6编写的单元测试示例
2019/08/17 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
中专毕业生自荐信
2013/11/16 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
党支部承诺书
2015/01/20 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技