对二维数组中的数据进行分组并求和
在数据处理场景中,你可能会遇到对二维数组的行进行分组的需求基于指定的列,然后累积每个列中另一列中的值
问题陈述:
给定一个如下所示的输入数组:
[ ['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中文网其他相关文章!