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

PHP如何避免展开运算符覆盖原数组 仅新增另一数组的缺失条目

解决方案

你直接使用展开运算符赋值$data_one = [...$data_two];相当于将$data_one的内容整体替换为$data_two,自然会覆盖原有id对应条目的default属性值。要实现仅新增$data_two中不存在于$data_one的id条目、同时保留原有条目的值,可按以下代码实现:

// 先将$data_one转为以id为键的关联数组,用于快速判断id是否存在
$existingMap = array_column($data_one, null, 'id');

foreach ($data_two as $item) {
    // 仅当id未在$data_one中存在时,才将该条目追加到$data_one
    if (!isset($existingMap[$item['id']])) {
        $data_one[] = $item;
    }
}

执行后$data_one的结构就和你期望的结果完全一致:原有491、492、493条目的default值保留,仅新增了id为494的条目。

如果需要保证数组始终按id升序排列,可在追加完成后增加排序逻辑:

usort($data_one, function($a, $b) {
    return $a['id'] - $b['id'];
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:18:02