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

PHP实现:合并两个同键名数组并更新对应键值

嘿,这个需求在PHP开发里挺常见的,有两种简单直接的方式能帮你实现——用$temp的键值覆盖$months对应项,同时保留$months里所有原有的月份键:

解决方案:合并数组并覆盖对应键值

方法一:使用array_merge()函数

array_merge()对关联数组的处理逻辑刚好匹配你的需求:后面数组的相同键会覆盖前面数组的对应值,而且会完整保留前面数组中未被覆盖的所有键值对。

代码示例:

$months = array( 
    'January' => 0.00, 
    'February' => 0.00, 
    'March' => 0.00, 
    'April' => 0.00, 
    'May' => 0.00, 
    'June' => 0.00, 
    'July' => 0.00, 
    'August' => 0.00, 
    'September' => 0.00, 
    'October' => 0.00, 
    'November' => 0.00, 
    'December' => 0.00, 
);

$temp = array( 
    'February' => 200.00, 
    'May' => 17.50, 
);

// 合并数组,$temp的键值会覆盖$months的对应项
$months = array_merge($months, $temp);

执行后$months就会完全符合你的预期:February的值变为200.00,May变为17.50,其余月份保持原有的0.00。

方法二:遍历$temp手动赋值

如果你想更灵活地控制覆盖过程(比如赋值前做合法性校验),可以直接循环遍历$temp的键值对,手动赋值给$months:

foreach ($temp as $month => $value) {
    $months[$month] = $value;
}

这种写法更直观,适合需要额外逻辑处理的场景,单纯覆盖的话和array_merge()效果一致。

⚠️ 注意:别用$months += $temp的写法,因为+运算符的逻辑是保留左侧数组的键值,右侧重复键会被直接忽略,和你需要的覆盖效果完全相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:50:33