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

如何对比数组元素,将第一个数组的新元素添加至第二个数组

实现方案(PHP为例)

核心思路是将数组转换为以元素为键的关联数组,快速判断元素是否存在,完全忽略元素顺序的影响,同时保证操作效率。

具体代码实现

<?php
$array1 = ['1','2','7','9'];
$array2 = ['7','9','1','2'];

// 将array2转为键值对(键为元素值,用于快速查找)
$array2Keys = array_flip($array2);

// 遍历array1,筛选出array2缺失的元素并添加
foreach ($array1 as $item) {
    if (!isset($array2Keys[$item])) {
        $array2[] = $item;
        $array2Keys[$item] = true; // 同步更新键集合,避免重复添加
    }
}

// 输出结果
print_r($array2);
?>

代码说明

  • array_flip($array2):把array2的元素转为数组键,判断元素是否存在的时间复杂度降为O(1),比in_array()的O(n)高效得多,适合元素较多的场景。
  • 遍历过程中,仅当元素不存在于array2时才执行添加操作,完全满足「元素完全相同则不操作」的要求。
  • 同步更新键集合,避免array1存在重复元素时,重复添加到array2。

测试场景验证

  1. 当array1与array2元素完全相同时:遍历无新增操作,array2保持原样。
  2. 当array1新增元素(比如['1','2','7','9','6']):遍历到'6'时会自动添加到array2末尾,最终array2变为['7','9','1','2','6'],符合需求。

扩展处理

如果需要允许array2保留重复元素(即array1有重复元素时,array2也同步添加重复项),只需去掉$array2Keys[$item] = true;这一行即可,但通常此类需求默认要求元素唯一,所以当前代码的去重逻辑更通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:10:29