获取数组内的数组总和

时间:2018-11-05 07:26:56

标签: php laravel

如何获取此数组的 sum

$arrays = [[0, 176000], [0,500], [0, 3960000]];

输出应为:

$arrays = [0, 4136500];

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

为首个null使用可变参数和array_map回调:

$arrays = [[0, 176000], [0,500], [0, 3960000]];
print_r(array_map('array_sum', array_map(null, ...$arrays)));

答案 1 :(得分:0)

在Larevel中,您可以使用collections。例如:

    $a = collect([[0, 176000], [0,500], [0, 3960000]]);
    $b = new Collection;
    foreach ($a as $k => $e) {
        $b->push ( $a->pluck($k)->sum() );
    }

    $c = $b->take(2); // Result is going to be here

答案 2 :(得分:0)

这是使用本机方式(但我认为需要重做)

<?php
$arrays = [[0, 176000], [0,500], [0, 3960000]];
$new_arrays = [];
foreach ($arrays as $key => $val) {
  $new_arrays[0] += $val[0];
  $new_arrays[1] += $val[1];
}
print_r($new_arrays);

答案 3 :(得分:0)

如果没有要跟踪的键,则U_mulders答案有效。

如果您有一个关联数组,则需要循环该数组并构建添加如下值:

$arrays = [[0,"A" => 176000], [0, "b" => 500], [0, 3960000, 200], [10, 500, 200]];

foreach($arrays as $sub){
    foreach($sub as $key => $num){
        if(!isset($new[$key])) $new[$key] =0;
        $new[$key] += $num;
    }
}
var_dump($new);

输出:

array(5) {
  [0]=>
  int(10)
  ["A"]=>
  int(176000)
  ["b"]=>
  int(500)
  [1]=>
  int(3960500)
  [2]=>
  int(400)
}

https://3v4l.org/NbNVg