2015-12-10 91 views
0

我想找到2個多維數組的區別。我試圖用修改後的遞歸數組差異函數來解決這個問題。多維數組 - 奇數鍵匹配

如果我有以下陣列設置:

$array1 = array(
    0 => array(
     'Age' => '1004', 
     'Name' => 'Jack' 
), 
1 => array (
    'Age' => '1005', 
    'Name' => 'John' 
) 
); 

$array2 = array(
0 => array(
    'Age_In_Days' => '1004', 
    'Name' => 'Jack' 
), 
1=> array(
'Transaction_Reference' => '1005', 
'Name' => 'Jack' 
) 
); 

我想不過按鍵是不一樣的,以配合陣列。我想返回兩個多維陣列,其中

$array1[$i]['Age'] == $array2[$i]['Age_In_Days']; 

我想保持原有的陣列結構,如果上述條件成立的區別,所以我要找的輸出是:

$diff = array (1 => array (
    'Age' => '1005', 
    'Name' => 'John' 
)); 

然而我遇到了如何修改遞歸函數來實現這個問題。任何幫助表示讚賞!謝謝!

+0

請問,1 =>陣列(「Transaction_reference」等等......是個錯誤,忽略這一點。我在源文件中刪除它。 – liamjnorman

+1

編輯你的問題,如果上面的代碼是錯誤的。 –

回答

0

您需要遍歷第一個數組並比較第二個數組的值。然後遵循你的條件。如果條件爲真,則將此唯一值推送到第三個數組。第三個數組中的值現在在第一個數組和第二個數組之間變化

$diff = []; 
foreach ($array1 as $value1) { 
    foreach ($array2 as $value2) { 
     if ($value1['Age'] !== $value2['Age_In_Days']) { 
      array_push($diff, $value1); 
     } 
    } 
} 
+0

莫非你給你的答案增加了一些解釋?沒有任何評論,這使得它很難看到這可能回答OP的問題。 –