PHP 根据key 给二维数组分组

5年以前  |  阅读数:240 次  |  编程语言:PHP 

我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组。

先来看以下数组,


    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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例