我需要对两个数组的关键路径相交处的值求和。阵列将具有完全相同的形状和大小。
我的示例输入数组:
$arr1 = [
[3206.63, 815.47],
[5024.71, 803.73],
[3290.36, 625.02],
];
$arr2 = [
[3138.87, 819.8],
[5000.24, 810.87],
[3221.15, 668.58],
];
想要的结果:
[
[6345.5, 1635.27],
[10024.95, 1614.6],
[6511.51, 1293.6]
]
循环第一个数组并使用其键同步访问第二个数组中的值。
$sums = array();
foreach ($arr1 as $key => $value) {
$sums[$key][] = $arr1[$key][0] + $arr2[$key][0];
$sums[$key][] = $arr1[$key][1] + $arr2[$key][1];
}
print_r($sums);
在函数式脚本中,同步迭代两个数组的行,然后迭代每行的列并对这些独立的列值求和。
代码:(演示)
print_r(
array_map(
fn(...$rows) => array_map(
fn(...$col) => array_sum($col),
...$rows
),
$arr1,
$arr2
)
);
对于经典的嵌套循环,将第一个数组复制到结果数组(没有理由迭代它),然后根据其键路径将第二个数组的值添加到结果数据。
代码:(演示)
$result = $arr1;
foreach ($arr2 as $i => $row) {
foreach ($row as $k => $v) {
$result[$i][$k] += $v;
}
}
print_r($result);