将二维数组的每一行减少为包含原始行值之和的单个元素[关闭]

问题描述 投票:0回答:2

如何对二维数组的每一行的子数组元素求和。

[
    'Item 1' => [8, 5, 4],
    'Item 2' => [24, 4],
    'Item 3' => [23, 4],
]

每行可以合并为一个包含其原始值之和的元素吗?

[
    'Item 1' => [17],
    'Item 2' => [28],
    'Item 3' => [27],
]

我之前尝试使用

array_merge_recursive()
将相同键的 2 个数组合并在一起,但现在我想将它们的元素添加在一起,这样它们就只有元素
[0]

php arrays multidimensional-array sum
2个回答
5
投票

您可以使用 array_maparray_sum 来实现您的目标:

$array = array('Item1' => array(1, 3), 'Item2' => array(3, 4));

$array = array_map(function($item) {
    return array_sum($item);
}, $array);

echo '<pre>';
var_dump($array);
echo '</pre>';

结果将是:

array(2) {
  ["Item1"]=>
  int(4)
  ["Item2"]=>
  int(7)
}

如果您确实需要结果是一个包含各项之和的数组,则将返回更改为:

return array(array_sum($item));

2
投票

也许你可以这样走很长的路

foreach($array as $key => $element){
    $sum = 0;
    foreach($element as $value){
        $sum += $value;
    }
    $result[$key][0] = $sum;
}

基本上像这样,您将浏览数组的每个元素,并创建所需元素的总和

© www.soinside.com 2019 - 2024. All rights reserved.