2011-04-21 89 views
1

我需要得到這兩個數組之間的區別,我已經試過array_diff($array1,$array2)沒有成功,任何想法?陣列的區別

陣列1

Array 
(
    [0] => Array 
     (
      [status] => 61192106047320064 
     ) 

    [1] => Array 
     (
      [status] => 61185038284357632 
     ) 

    [2] => Array 
     (
      [status] => 61182890951720960 
     ) 

) 

數組2

Array 
(
    [0] => Array 
     (
      [status] => 61185038284357632 
     ) 

    [1] => Array 
     (
      [status] => 61182890951720960 
     ) 

) 

在此先感謝。

+0

定義的區別你需要的所有的不同或數組1 [0] ==數組2 [0]你需要打印的區別。顯示你嘗試過的一些代碼。不知您對算法搜索陣列... – austinbv 2011-04-21 22:33:26

+0

究竟你是如何定義的區別?設置差異,對稱差異,必須元素具有相同的陣列位置,...?你期望的結果是什麼? – phimuemue 2011-04-21 22:33:42

+0

第一個數組有新的結果,第二個是用於分隔值而不是索引,我需要得到數組之間的差異,並將結果放入數據庫,期望從fisrt數組獲得[status] => 61192106047320064。 – greenbandit 2011-04-21 22:36:37

回答

2

也許我米誤會,但你就不能這樣做對你的具體問題?

$newStatuses = array(); 

foreach($array1 as $element1) { 
    foreach($array2 as $element2) { 
     if($element1['status'] == $element2['status']) { 
      continue 2; 
     } 
    } 

    $newStatuses[] = $element1; 
} 

$ newStatuses的每個元素將是array1中'status'元素不在array2中的數組。

所以,$ newStatuses會是這樣:

Array 
(
    [0] => Array 
     (
      [status] => 61192106047320064 
     ) 

) 
+0

由於它的工作原理就像一個魅力! – greenbandit 2011-04-22 00:50:29

+0

非常好!樂意效勞。 – Compeek 2011-04-22 02:08:31

2

根據array_diff

此函數只檢查了n維陣列中的一個維度。當然,你可以用和array_diff檢查更深的維度($數組1 [0],$數組2 [0]);.

因此不能直接diff的這些陣列的第二維度。

取而代之,也許可以使用array_map提取status值,保存爲兩個一維數組,然後使用array_diff。如果您有多個鍵,請使用for循環。