首页 > 解决方案 > PHP - 如何获得多维数组的总和?

问题描述

我试图得到这个数组的总和:

Array
(
[1] => 0
[2] => 1
[3] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 1
    )

[4] => 1
[5] => 0
)

在这种情况下,总和应该是 5。我似乎无法让它工作。有人能帮我吗?

编辑:

我尝试过使用 array_sum (这显然不起作用)和这样的递归数组:

  $array_obj = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
  $sum = 0;
  foreach($array_obj as $key => $value) {
    if($key == '3')
      $sum += $value;
  }

不知何故,这会返回 20;

标签: phparraysrecursionmultidimensional-arraysum

解决方案


您可以array_walk_recursive()通过引用与使用外部变量结合使用:

$sum = 0;
array_walk_recursive($array, function($number) use (&$sum) {
    $sum += $number;
});
echo $sum;

如果数组的元素是数组本身,array_walk_recursive()将遍历它。否则它将调用元素上的函数。


推荐阅读