首页 > 解决方案 > PHP - 比较两个数组,如果有重复,则删除所有匹配项

问题描述

我有两个数组:

foo
bar
baz

foo
baz

我想比较这两个数组,如果有匹配项,请删除两个匹配项(不仅仅是重复项),所以我最终得到一个这样的数组:

bar

我知道数组 1 将始终包含foo, bar, andbaz并且数组 2 将始终包含fooand baz。数组中的条目并不总是以相同的顺序排列,但内容将保持不变。

而不是比较两个数组,我可以做类似16153948的解决方案的事情,但这需要我为我想要删除的每个匹配项使用(几乎)重复的行,因为条目是相当不相关的(不能使用正则表达式),这似乎不是一个好的解决方案。

标签: phparrays

解决方案


您可以使用array_diff获得两个数组的差异,然后使用array_merge合并它们:

$res = array_merge(array_diff($a, $b), array_diff($b, $a));
print_r($res);

php演示

输出

Array
(
    [0] => bar
)

具有更多不同值的PHP 演示。


推荐阅读