2011-12-14 64 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);