如何获取此数组的 sum 。
$arrays = [[0, 176000], [0,500], [0, 3960000]];
输出应为:
$arrays = [0, 4136500];
任何帮助将不胜感激。
答案 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)
}