php - 按一列对二维数组数据进行分组,并对每组中的其他列进行求和(分别)

标签 php arrays multidimensional-array sum grouping

我需要按第一列值(id 列)对索引数组的索引数组中的数据进行分组。在每个组中,我需要找到第二列的总和并找到第三列的总和。

示例输入:

[
    [111, 5, 3],
    [111, 3, 7],
    [111, 2, 1],
    [222, 5, 3],
]

期望的结果:

[
    111 => [10, 11]
    222 => [5, 3]
]

最佳答案

您必须使用循环手动执行此操作。像这样的东西应该有效:

$result = array();

foreach( $input as $row) {
    $id = array_shift( $row);

    foreach( $row as $key => $value) {

        $result[ $id ][ $key ] = 
            ( isset( $result[ $id ][ $key ]) ? 
                  $result[ $id ][ $key ] + $value : 
                  $value
            );
    }
}

输出:

array(2) {
  [111]=>
  array(2) {
    [0]=>
    int(10)
    [1]=>
    int(11)
  }
  [222]=>
  array(2) {
    [0]=>
    int(5)
    [1]=>
    int(3)
  }
}

Demo

关于php - 按一列对二维数组数据进行分组,并对每组中的其他列进行求和(分别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006797/

相关文章:

c - 传递指针变量以存储字符串数组(命令行参数)

php - Ajax调用太慢? JavaScript 和 PHP

c - 如何修改C中字符串数组中的单个字符?

来自json的url中的php数组

php - 计算对象数组的列中某个值的出现次数

c++ - 二维数组作为 C++ 中的函数参数?

php - 通知 : Undefined index: ZZZZZZWTF?

php - 在两个定界字符之一之前隔离前导字符串

php - 将现有应用程序迁移到什么是一个好的 PHP 框架?

javascript - 遍历嵌套数组