2011-12-14 18 views
0

我有三个数组,每个数组都有SimpleXML对象。它们的结构如下所示:如何过滤PHP中三个数组中的差异?

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

什么是做到这一点的最佳方式?我查找了一个函数来比较数组,但我没有运气。有任何想法吗?

任何帮助非常感谢!

+0

你需要附上你的XML – ajreal 2011-12-14 13:33:21

回答

0

循环在你的第一阵列,使用in_array,像这样的检查它针对第二和第三:

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

这工作完美。谢谢! – jasonaburton 2012-01-11 19:24:29

0

创建一个新的数组。

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

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

在迭代结束时,您将获得所需的数组。

3

最好的选择将是使用PHP的内置array-intersect功能。

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