数组合并和总数,如果它是相同的键

时间:2011-10-13 15:30:39

标签: php arrays

我有两个数组:

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

我想合并并对具有相同键的值求和。

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

任何人都可以告诉我该怎么做?

1 个答案:

答案 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);