2011-10-13 47 views
0

我有兩個陣列:陣列合併和總如果相同的鍵

$A = array("EUR"=>10, "USD"=>20) 
$B = array("EUR"=>10, "JPY"=>20) 

我要合併和求和具有相同的密鑰值。

$C = array(
    "EUR" => array(10,10), 
    "JPY" => 20, 
    "USD" => 20, 
) 

任何人都可以告訴我該怎麼做?

回答

2

有了這個代碼:

<?php 
$A = array("EUR"=>10,"USD"=>20); 
$B = array("EUR"=>10,"JPY"=>20); 

$C = $A; 
foreach ($B as $key => $value) { 
    if (isset($C[$key])) { 
     $C[$key] = $C[$key] + $value; 
    } else { 
     $C[$key] = $value; 
    } 
} 

結果將是以下數組:

array(3) { 
    ["EUR"] => int(20) 
    ["USD"] => int(20) 
    ["JPY"] => int(20) 
} 

它已經計算出的總和。爲證明看http://codepad.org/Aay0bEh9

如果你想在結果數組$ C歐元項是一個數組(10,10)你可以改變foreach循環的身體進入下面的代碼:

if (! isset($C[$key])) { 
    $C[$key] = array(); 
} 
$C[$key][] = $value; 

編輯:

對於我的最後一句話和代碼示例,而不是改變的foreach的身體,你可以簡單地做到以下幾點:

$C = array_merge_recursive($A, $B); 
+0

感謝@揚亨克你他LP: – sophie

+0

但第二個選擇它不會做的伎倆。 – sophie

+0

第二個選項將爲$ C數組中的EUR鍵設置一個數組(10,10)。我知道這不是歐元匯率,但它等於您在問題中要求的結果:)這就是爲什麼我將它包含在我的答案中。 –