子数组中所有元素的求和 - PHP

3
我有一个名为$main_array的数组。想要对子数组中的所有元素进行求和,例如[0]=>6,[1]=>11,[2]=>15。
Array 
( 
[0] => Array 
       ( 
         [0] => 1 
         [1] => 2 
         [2] => 3 
       ) 
[1] => Array 
       ( 
         [0] => 2 
         [1] => 4 
         [2] => 5 
       ) 
[2] => Array 
       ( 
         [0] => 8 
         [1] => 4 
         [2] => 3 
         ) 
)

尝试了以下代码。

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 
    ) 
)

我期望的数组结构如下所示。
Array 
( 
    [0] => 6

    [1] => 11

    [2] => 15

)

提前感谢你!

3个回答

6
当您调用Array函数时,您正在显式创建一个数组,因此必须从Array('1'=>array_sum($value));中删除this。
下面是您代码的正确写法。
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,
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接