php - 按一列对二维数据进行分组并对另一列求和以生成关联数组

标签 php arrays multidimensional-array group-by sum

我需要按一列对二维数组中的数据进行分组,并对相应组中的另一列值求和。

在我的数据中,逗号用作小数位字符 - 这些是浮点值。

输入:

[
    [18, '1,07'];
    [ 8, '0,44'],
    [ 8, '0,67'],
    [18, '0,55'],
    [18, '0,19'],
    [ 8, '0,48'],
    [18, '2,59'],
    [ 8, '0,15'],
    [18, '12,97'],
]

期望的结果:

[
    18 => '17,37',
     8 =>  '1,74',
]

最佳答案

尝试这样的事情:

<?php

$data = Array ( 
    Array ( 0 => '18', 1 => '1,07' ),
    Array ( 0 => '8', 1 => '0,44' ),
    Array ( 0 => '8', 1 => '0,67' ),
    Array ( 0 => '18', 1 => '0,55' ), 
    Array ( 0 => '18', 1 => '0,19' ),
    Array ( 0 => '8', 1 => '0,48' ),
    Array ( 0 => '18', 1 => '2,59' ),
    Array ( 0 => '8', 1 => '0,15' ),
    Array ( 0 => '18', 1 => '12,97' ) 
);

// predefine array
$data_summ = array();
foreach ( $data as $value ) {
    $data_summ[ $value[0] ] = 0;
}

foreach ( $data as $list ) {
    $number = str_replace( ",", ".", $list[1] ) * 1;
    $data_summ[ $list[0] ] += (float)$number;
}

?>

$data_summ的输出:

Array
(
    [8] => 1.74
    [18] => 17.37
)

如果我理解正确的话。

关于php - 按一列对二维数据进行分组并对另一列求和以生成关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633176/

相关文章:

php - 在 select 语句中确定字符串的优先级

c - 改进此算法

c - 从整数列表中删除元素

C 编程 : for loop and break

c++ - 用另一个替换多维数组?

javascript - 如何将字符串格式的多维数组解析回多维数组

php - 使用 PHP 以 HTML 格式返回 Google 图像搜索结果

javascript - 我想将数据库元素数组提取到表中

php - C++转换PHP代码将数字添加到字符串

php - 我在将 PHP 中的数组转为 JSON 结构用于 Javascript 时遇到问题