【发布时间】:2011-08-30 11:39:30
【问题描述】:
我正在寻找一个不替换值但添加它们的array_merge() 函数。
例如,这是我正在尝试的代码:
echo "<pre>";
$a1 = array(
"a" => 2
,"b" => 0
,"c" => 5
);
$a2 = array(
"a" => 3
,"b" => 9
,"c" => 7
,"d" => 10
);
$a3 = array_merge($a1, $a2);
print_r($a3);
可悲的是,这会输出:
Array
(
[a] => 3
[b] => 9
[c] => 7
[d] => 10
)
然后我尝试了,而不是array_merge,只是简单地将两个数组相加
$a3 = $a1 + $a2;
但这会输出
Array
(
[a] => 2
[b] => 0
[c] => 5
[d] => 10
)
我真正想要的是能够根据需要传递尽可能多的数组,然后得到它们的总和。所以在我的例子中,我希望输出是:
Array
(
[a] => 5
[b] => 9
[c] => 12
[d] => 10
)
当然,我可以使用许多 foreach 等来构建一些功能,但我正在寻找更智能、更清洁的解决方案。感谢您的任何指点!
【问题讨论】:
-
这听起来像是您想要为其编写函数的那种东西。无论如何,我都不会认为它是“笨拙的”,这是一件相当独特的事情。然而,我可能被证明是错误的,但我不相信有任何本机函数可以自己处理这个问题。如果写一个函数是解决办法,你还需要帮助吗?
-
我相信没有内置函数可以做到这一点,检查这个问题:stackoverflow.com/questions/1496682/…
-
问题表述错误。
array_merge确实合并两个数组,同时保留所有键。但是您想将两个数组的相同键的值相加,这是另一回事。