与array_intersect相反

时间:2012-01-22 16:17:01

标签: php

我正在寻找与函数array_intersect相反的函数,它基本上是一个函数,它返回 中所提供数组的 元素。

示例:

$a1 = array(1, 2, 3);
$a2 = array(2, 3, 4);
$result = array(1, 4);

我知道如何以编程方式完成它(我只有两个数组,所以array_merge(array_diff($a1, $a2), array_diff($a2, $a1))可以完成这项工作),但我想知道是否有一个我找不到的内置函数。 / p>

感谢。

4 个答案:

答案 0 :(得分:5)

array_diff($a, $b) !== array_diff($b, $a)以来 array_intersect的反转是:

array_merge(array_diff($a,$b), array_diff($b,$a));

这是一个PHPUnit测试格式:

class ArrayInverseTest {
    function testInverseArrayIntersect() {
        $a = array(1, 2, 3);
        $b = array(2, 3, 4);

        $this->assertEquals(
            array_values(array(1, 4)),
            array_values(array_merge(array_diff($a, $b), array_diff($b, $a)))
        );
    }
}

答案 1 :(得分:2)

它没有内置。请注意,您可以改进解决方案:

array_merge($a1, array_diff($a2, $a1));

答案 2 :(得分:1)

没有内置

我相信一种语言永远不会提供这样的内置函数

答案 3 :(得分:1)