PHP 根据key 给二维数组分组

转载 2018年04月16日 12:52:24
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 用键名分组相加的二维数组实例函数

本文介绍一篇关于php 二维数组以某一键名进行分组相加的实例程序,如果是从数据库里取数据的时候大可以SELECT SUM(t_value),t_id FROM t_table GROUP BY t_i...
  • u012275531
  • u012275531
  • 2013-11-12 13:52:39
  • 1285

php 数组分组 二维数组中,将某个键值相同的合并到一个数组中

//原数组 $arr    =   array (     0 => array         (             'initial' => 'A',             'typena...
  • aiku_de_yu
  • aiku_de_yu
  • 2015-10-10 16:11:01
  • 3795

PHP开发小技巧②—实现二维数组根据key进行排序

在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果;但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来...
  • Zhihua_W
  • Zhihua_W
  • 2016-11-26 14:58:34
  • 657

PHP根据二维数组的某键值合并二维数组

  • u010295877
  • u010295877
  • 2016-07-20 23:03:14
  • 1138

php 二维数组 知道keyvalue 怎么得到对应的value

function getValueByKey($arr, $key) {     foreach($arr as $k => $v) {         if ($k == $key) {   ...
  • u011447828
  • u011447828
  • 2014-12-08 16:00:13
  • 1744

二维数组把某一相同健值进行归类

用PHP把一个二维数组的相同健值进行归类,如下://原始二维数组$info Array ( [0] => Array ( [last_number] =...
  • Naught00
  • Naught00
  • 2017-01-05 10:10:17
  • 924

php二维数组排序 根据某一键值排序 array_multisort

对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(array1,sorting order, sorting typ...
  • woshihaiyong168
  • woshihaiyong168
  • 2016-12-07 20:25:24
  • 3189

PHP 二维数组根据某个字段进行排序

  • u014796999
  • u014796999
  • 2016-04-08 16:21:04
  • 1353

php 根据某数组key计算和

数据原型: {"game_id":"111","type":2,"num":504},{"game_id":"111","type":6,"num":8154},{"game_id":"111","t...
  • u011650048
  • u011650048
  • 2016-07-15 15:17:13
  • 483

php根据key值去重

1.php二维数组 /** * 二维数组去重 * @param $arr * @param $key * @return array */ public static function...
  • qq_35843527
  • qq_35843527
  • 2017-08-15 13:15:02
  • 334
收藏助手
不良信息举报
您举报文章:PHP 根据key 给二维数组分组
举报原因:
原因补充:

(最多只允许输入30个字)