我需要按一列对二维数组中的数据进行分组,并对相应组中的另一列值求和。
在我的数据中,逗号用作小数位字符 - 这些是浮点值。
输入:
[
[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/