对二维数组的每个子数组中的所有元素求和

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

我有以下二维数组,我想对每个子数组中的所有元素求和。

输入:

$main_array = [
    [1, 2, 3],
    [2, 4, 5],
    [8, 4, 3]
]

期望的结果:

[6, 11, 15]

我尝试了以下代码:

foreach ($main_array as $key => $value)
    $main_array[$key] = Array('1' => array_sum($value));
print_r($main_array);

但是我得到的数组结构是:

Array 
( 
    [0] => Array 
    ( 
        [1] => 6 
    ) 
    [1] => Array 
    ( 
        [1] => 11
    ) 
    [2] => Array 
    ( 
        [1] => 15 
    ) 
)
php multidimensional-array sum
3个回答
6
投票

当您调用 Array 函数时,您显式地创建了一个数组,因此您必须将其从

Array('1'=>array_sum($value));

中删除

这就是你的代码应该是什么样的

foreach ($main_array as $key => $value)
  $main_array[$key] = array_sum($value);

2
投票

试试这个:

  foreach ($main_array as $key => $value)
     $main_array[$key] = array_sum($value);

即直接将和放入顶层数组中。


1
投票

对输入数组中的每一行调用

array_sum()
array_map()
使此操作富有表现力、简洁,并且不需要声明任何新变量。

代码:(演示

$array = [
    [1, 2, 3],
    [2, 4, 5],
    [8, 4, 3],
];

var_export(array_map('array_sum', $array));

输出:

array (
  0 => 6,
  1 => 11,
  2 => 15,
)
© www.soinside.com 2019 - 2024. All rights reserved.