将关联数组与共享键的求和值合并
合并多个关联数组同时组合共享键的值可能是一项常见但具有挑战性的任务。本文提出了解决此问题的几种解决方案。
使用求和进行数组合并
目标是合并两个或多个平面关联数组(具有字符串键和非字符串键的数组) -数组值)并对与相同键关联的值求和。这与 array_merge() 函数的默认行为不同,该函数替换重复键的值。
示例
考虑以下示例:
<code class="php">$a1 = array("a" => 2, "b" => 0, "c" => 5); $a2 = array("a" => 3, "b" => 9, "c" => 7, "d" => 10);</code>
如果我们使用 array_merge() 来组合这些数组,结果将是:
<code class="php">$a3 = array_merge($a1, $a2); print_r($a3); </code>
输出:
Array ( [a] => 3 [b] => 9 [c] => 7 [d] => 10 )
如您所见,共享键的值( "a", "b", "c") 不是求和而是替换。
自定义解决方案
为了达到所需的结果,我们可以使用自定义函数迭代组合数组的键并对共享键的值求和。这是一个这样的实现:
<code class="php">$sums = array(); foreach (array_keys($a1 + $a2) as $key) { $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0); }</code>
输出:
<code class="php">Array ( [a] => 5 [b] => 9 [c] => 12 [d] => 10 )</code>
此函数允许我们使用共享键合并多个数组,并提供这些键的总和值。
以上是如何将关联数组与共享键的求和值合并?的详细内容。更多信息请关注PHP中文网其他相关文章!