0
我有兩個陣列:陣列合併和總如果相同的鍵
$A = array("EUR"=>10, "USD"=>20)
$B = array("EUR"=>10, "JPY"=>20)
我要合併和求和具有相同的密鑰值。
$C = array(
"EUR" => array(10,10),
"JPY" => 20,
"USD" => 20,
)
任何人都可以告訴我該怎麼做?
我有兩個陣列:陣列合併和總如果相同的鍵
$A = array("EUR"=>10, "USD"=>20)
$B = array("EUR"=>10, "JPY"=>20)
我要合併和求和具有相同的密鑰值。
$C = array(
"EUR" => array(10,10),
"JPY" => 20,
"USD" => 20,
)
任何人都可以告訴我該怎麼做?
有了這個代碼:
<?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);
感謝@揚亨克你他LP: – sophie
但第二個選擇它不會做的伎倆。 – sophie
第二個選項將爲$ C數組中的EUR鍵設置一個數組(10,10)。我知道這不是歐元匯率,但它等於您在問題中要求的結果:)這就是爲什麼我將它包含在我的答案中。 –