我有两个数组:
$A = array("EUR"=>10, "USD"=>20)
$B = array("EUR"=>10, "JPY"=>20)
我想合并并对具有相同键的值求和。
$C = array(
"EUR" => array(10,10),
"JPY" => 20,
"USD" => 20,
)
任何人都可以告诉我该怎么做?
答案 0 :(得分: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中的EUR条目为数组(10,10),您可以将foreach循环的主体更改为以下代码:
if (! isset($C[$key])) {
$C[$key] = array();
}
$C[$key][] = $value;
修改强>
对于我的上一篇评论和代码示例,您可以简单地执行以下操作,而不是更改foreach的正文:
$C = array_merge_recursive($A, $B);