这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 根据 key 给二维数组分组的相关资料, 非常不错,具有参考借鉴价值,需要的朋友可以参考下
我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组。
先来看以下数组,
- 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 给二维数组分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0810/340884.html