按列对二维数组行数据进行分组并对另一列求和
在分析表格数据时,经常需要根据共享数据来合并行特定列中的值,同时对其他列执行计算。输入对 2D 数组行进行分组并对不同列中的值求和的挑战。
问题陈述:
您将获得一个 2D 数组,其中每行代表一个数据条目。目标是按指定的分组列(例如“dd”)对这些行进行分组,并对每组内另一列(例如“quantity”)的值求和。结果应该是一个简化的二维数组,具有唯一的分组值和相应的求和列值。
示例:
Input: [ ['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'], ]; Desired result: [ ['quantity' => 15, 'dd' => '01-Nov-2012'], ['quantity' => 3, 'dd' => '02-Nov-2012'], ['quantity' => 19, 'dd' => '03-Nov-2012'], ];
解决方案:
要解决此问题,请按照以下步骤操作:
以下是 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);
此解决方案有效地按指定列对行进行分组,累积每个组内的列值,并生成简化的 2D数组作为所需的结果。
以上是如何按列对二维数组中的行进行分组并对另一列求和?的详细内容。更多信息请关注PHP中文网其他相关文章!