PHP中,如何查找一个数组中不在另一个数组中的元素?

12

是否有一个类似于array_merge的php函数,可以完成相反的操作?换句话说,我有两个数组。我想从第一个数组中删除存在于第二个数组中的任何值。我可以通过循环迭代来实现这一点,但如果有一个便利的可用函数来完成相同的事情,那将是首选选项。

示例:

array1 = [1, 2, 3, 4, 5]
array2 = [2, 4, 5]

$result = array_unmerge(array1, array2);

$result应该输出[1,3]


3
http://php.net/manual/zh/function.array-diff.php - j08691
3个回答

37
你可以使用array_diff()函数来计算两个数组之间的差异:
$array1 = array(1, 2, 3, 4, 5);
$array2 = array(2, 4, 5);

$array3 = array_diff($array1, $array2);
print_r($array3);

输出:

Array
(
    [0] => 1
    [2] => 3
)

演示!


5
完整、组织良好的答案,包括描述、文档链接、代码、输出和演示。+1。 - showdev
太好了,这正是我正在寻找的,我几乎感到羞愧,因为我无法通过搜索找到它。谢谢。 - Joshua Zollinger
@JoshuaZollinger:没问题 :) - Amal Murali

1
 $array1 = array(1, 2, 3, 4, 5);
 $array2 = array(2, 4, 5);
 $result = array_diff($array1, $array2);

1

array_diff

返回一个数组,其中包含 array1 中所有不在任何其他数组中出现的条目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接