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

PHP中忽略重复元素比较两数组并获取异同值的实现方法

解决方案:忽略重复元素比较PHP数组并输出结果

没问题,我来帮你搞定这个PHP数组比较的需求!你之前用$a1 == $a2没成功,是因为这种方式会严格检查数组的元素顺序、重复次数甚至键名,而你需要的是忽略重复元素,只判断两个数组的元素集合是否一致,同时还要输出共同值和差异值。下面是完整的实现方案:

实现思路

  1. 先对两个数组去重,保留唯一元素集合;
  2. 计算去重后数组的交集(即共同值);
  3. 计算去重后数组的对称差集(即只在其中一个数组出现的唯一差异值);
  4. 通过排序去重后的数组,比较它们是否完全一致(忽略顺序)。

完整代码示例

// 给定的两个数组
$a1 = array(1, 2, 9, 2, 4, 5, 5, 7);
$a2 = array(1, 2, 4, 3, 3, 5, 6, 7, 9, 2 );

// 步骤1:对数组去重
$uniqueA1 = array_unique($a1);
$uniqueA2 = array_unique($a2);

// 步骤2:计算共同值(交集)并格式化输出
$commonValues = array_intersect($uniqueA1, $uniqueA2);
sort($commonValues); // 排序让输出更整齐
$commonStr = implode(',', $commonValues);

// 步骤3:计算差异值(对称差集)并格式化输出
$diffFromA1 = array_diff($uniqueA1, $uniqueA2);
$diffFromA2 = array_diff($uniqueA2, $uniqueA1);
$differences = array_merge($diffFromA1, $diffFromA2);
sort($differences); // 排序让输出更整齐
$diffStr = implode(',', $differences);

// 步骤4:判断两个数组忽略重复后是否相等
sort($uniqueA1);
sort($uniqueA2);
$isEqual = $uniqueA1 === $uniqueA2;

// 输出结果
echo "compared values = $commonStr;\n";
echo "differences = $diffStr;\n";
echo "output = " . ($isEqual ? 'true' : 'false') . ";";

运行结果

运行上述代码后,会输出你期望的结果:

compared values = 1,2,4,5,7,9;
differences = 3,6;
output = false;

关键函数说明

  • array_unique():移除数组中的重复元素,返回只包含唯一值的数组;
  • array_intersect():计算两个数组的交集,返回同时存在于两个数组中的元素;
  • array_diff():计算两个数组的差集,返回只存在于第一个数组中的元素;
  • sort():对数组进行升序排序,确保我们比较的是元素集合而非顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:20:35