You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何计算两个关联数组的和与差?

解决关联数组的求和与求差问题

没问题,我来帮你搞定这个关联数组的数值运算需求!你之前用的array_merge、array_diff、array_combine其实都不是用来做对应键的数值加减的,所以达不到预期结果很正常:

  • array_merge是合并数组,相同键的元素会被后面的覆盖,不是求和;
  • array_diff是找两个数组的键值对差集,不是数值相减;
  • array_combine是用一个数组做键、另一个做值生成新数组,和数值运算完全不沾边。

解决方案:遍历数组做数值运算

我们可以通过遍历数组的键,对每个键对应的数值分别做加减运算,还能兼容两个数组键不完全一致的情况:

1. 先定义你的两个数组

$arr1 = array('cat' => 5, 'dog' => 2);
$arr2 = array('cat' => 1, 'dog' => 2);

2. 计算求和数组(arr3)

$arr3 = [];
// 获取两个数组的所有唯一键,避免遗漏某一方独有的键
$allKeys = array_unique(array_merge(array_keys($arr1), array_keys($arr2)));

foreach ($allKeys as $key) {
    // 若某个数组没有该键,默认值设为0
    $val1 = isset($arr1[$key]) ? $arr1[$key] : 0;
    $val2 = isset($arr2[$key]) ? $arr2[$key] : 0;
    $arr3[$key] = $val1 + $val2;
}
// 最终arr3结果:array('cat' => 6, 'dog' => 4)

3. 计算求差数组(arr4)

$arr4 = [];
foreach ($allKeys as $key) {
    $val1 = isset($arr1[$key]) ? $arr1[$key] : 0;
    $val2 = isset($arr2[$key]) ? $arr2[$key] : 0;
    $arr4[$key] = $val1 - $val2;
}
// 最终arr4结果:array('cat' => 4, 'dog' => 0)

简化版(当确定两个数组键完全一致时)

如果你能保证两个数组的键完全相同,那可以直接遍历其中一个数组的键,代码更简洁:

// 简化求和
$arr3 = [];
foreach ($arr1 as $key => $val) {
    $arr3[$key] = $val + $arr2[$key];
}

// 简化求差
$arr4 = [];
foreach ($arr1 as $key => $val) {
    $arr4[$key] = $val - $arr2[$key];
}

这样就能完美得到你想要的和数组与差数组啦!

内容的提问来源于stack exchange,提问作者athira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:00:12