通过按一列对行进行分组并对每组中的另一列求和来减少 2D 数组
在这种情况下,您寻求操作 2D 数组通过根据特定列组织其行,同时聚合每个组中另一列的值来创建数组创建。
要满足此需求,请考虑对输入数组的行采用迭代方法:
$in = 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'], );
创建一个空输出数组:
$out = array();
现在,遍历每一行:
foreach ($in as $row) {
在每一行中,检查 dd 值是否已经存在于$out 数组:
if (!isset($out[$row['dd']])) {
如果没有,请使用初始化的“数量”为 dd 值创建一个新条目:
$out[$row['dd']] = array( 'dd' => $row['dd'], 'quantity' => 0, );
无论如何,通过添加当前的数量来更新数量值行的数量:
$out[$row['dd']]['quantity'] += $row['quantity'];
最后,对 $out 数组进行数字索引以实现所需的简化二维array:
$out = array_values($out);
因此,您将获得包含分组行的汇总数组:
var_dump($out); [ ['quantity' => 15, 'dd' => '01-Nov-2012'], ['quantity' => 3, 'dd' => '02-Nov-2012'], ['quantity' => 19, 'dd' => '03-Nov-2012'], ]
以上是如何按一列对二维数组中的行进行分组并对另一列求和?的详细内容。更多信息请关注PHP中文网其他相关文章!