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

Susan Sarandon
发布: 2024-11-23 01:45:15
原创
834 人浏览过

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

通过按一列对行进行分组并对每组中的另一列求和来减少 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板