我有以下二维数组,我想对每个子数组中的所有元素求和。
输入:
$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
)
)
当您调用 Array 函数时,您显式地创建了一个数组,因此您必须将其从
Array('1'=>array_sum($value));
中删除
这就是你的代码应该是什么样的
foreach ($main_array as $key => $value)
$main_array[$key] = array_sum($value);
试试这个:
foreach ($main_array as $key => $value)
$main_array[$key] = array_sum($value);
即直接将和放入顶层数组中。
对输入数组中的每一行调用
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,
)