首页  >  文章  >  后端开发  >  如何按特定列对行进行分组并对二维数组中的另一列求和?

如何按特定列对行进行分组并对二维数组中的另一列求和?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-17 02:33:03648浏览

How to Group Rows by a Specific Column and Sum Another Column in a 2D Array?

对二维数组中的数据进行分组并求和

在数据处理场景中,你可能会遇到对二维数组的行进行分组的需求基于指定的列,然后累积每个列中另一列中的值

问题陈述:

给定一个如下所示的输入数组:

[
    ['quantity' => 5,  'dd' => '01-Nov-2012'],
    ['quantity' => 10, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 4,  'dd' => '03-Nov-2012'],
    ['quantity' => 15, 'dd' => '03-Nov-2012'],
]

您希望按“dd”列并对每组内的“数量”值求和。预期输出为:

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
]

解决方案:

为了实现这一点,我们可以使用简单的循环机制。从第一行开始,我们检查“dd”值是否已存在于输出数组中。如果没有,我们为该“dd”创建一个新条目,并将“数量”初始化为 0。

然后,对于每一行,我们将“数量”添加到输出数组中的相应组中。我们重复此过程,直到处理完所有行。最后,我们使用 array_values() 将输出数组转换为数字索引。

以下 PHP 代码演示了解决方案:

$in = array(array()); // your input
$out = array();
foreach ($in as $row) {
    if (!isset($out[$row['dd']])) {
        $out[$row['dd']] = array(
            'dd' => $row['dd'],
            'quantity' => 0,
        );
    }
    $out[$row['dd']]['quantity'] += $row['quantity'];
}
$out = array_values($out); // make the out array numerically indexed
var_dump($out);

以上是如何按特定列对行进行分组并对二维数组中的另一列求和?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn