如何过滤PHP中三个数组的差异?

时间:2011-12-14 13:31:40

标签: php arrays filter

我有三个阵列,每个阵列都有SimpleXML对象。它们的结构如下:

Array
(
    [0] => SimpleXMLElement Object
        (
            [post_id] => 1476
            [name] => Johnson Fisheries Ltd.
            [owner] => Mr. John Johnson
        )
)

我希望能够比较所有3个数组并过滤掉差异,以便结果只包含所有3个数组中相同的元素。

例如:

Array1
    (
        [0] => 1476
        [1] => 1560
        [2] => 1342
    )

Array2
    (
        [0] => 2454
        [1] => 1476
    )

Array3
    (
        [0] => 3412
        [1] => 7512
        [2] => 2454
        [4] => 1476
    )

结果数组只包含[0] => 1476

最好的方法是什么?我已经找到了一种能够以这种方式比较数组的函数,但我没有运气。有什么想法吗?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

最佳选择是使用php的内置array-intersect功能。

$answer =  array_intersect($Array1,$Array2,$Array3);

答案 1 :(得分:0)

创建一个新数组。

将第一个数组的所有元素添加到新数组中。

遍历所有其他元素,找出新阵列中哪些元素在要比较的数组中。删除所有未出现的元素。

在迭代结束时,您拥有所需的数组。

答案 2 :(得分:0)

循环遍历第一个数组,使用in_array在第2个和第3个数组中进行检查,如下所示:

foreach($array1 as $post_id) {
    if(in_array($post_id, $array2) && in_array($post_id, $array3)) {
        // We have a winner!
    }
}