首页 >后端开发 >php教程 >如何在 PHP 中合并多个关联数组和共享键的求和值?

如何在 PHP 中合并多个关联数组和共享键的求和值?

Linda Hamilton
Linda Hamilton原创
2024-11-03 16:08:30975浏览

How to Merge Multiple Associative Arrays and Sum Values of Shared Keys in PHP?

如何合并多个关联数组以及共享键的求和值

挑战

您可能遇到过,内置的 array_merge( PHP 中的 ) 函数在组合多个数组时会覆盖共享键的值。当您需要合并数组并对共享键的值求和时,这可能会出现问题。

解决方案

为了解决这一挑战,我们可以创建一个自定义函数或利用数组操作来实现我们期望的行为。让我们探索几种可能的方法:

使用自定义函数

<code class="php">function array_sum_identical_keys() {
    $arrays = func_get_args();

    $keys = array_keys(array_reduce($arrays, function ($keys, $arr) { return $keys + $arr; }, array()));
    $sums = array();

    foreach ($keys as $key) {
        $sums[$key] = array_reduce($arrays, function ($sum, $arr) use ($key) { return $sum + @$arr[$key]; });
    }

    return $sums;
}</code>

此函数接受任意数量的数组作为参数,并返回一个关联数组与组合键和求和值。

使用错误抑制

<code class="php">$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = @($a1[$key] + $a2[$key]);
}</code>

此技术利用错误抑制运算符 (@) 在执行加法之前检查两个数组中是否存在键。

使用数组映射

<code class="php">$keys = array_fill_keys(array_keys($a1 + $a2), 0);
$sums = array_map(function ($a1, $a2) { return $a1 + $a2; }, array_merge($keys, $a1), array_merge($keys, $a2));</code>

此方法使用 array_fill_keys() 创建映射然后使用 array_map() 添加与共享键关联的值。

组合解决方案

<code class="php">$sums = array_fill_keys(array_keys($a1 + $a2), 0);
array_walk($sums, function (&amp;$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));</code>

此组合将错误抑制技术与 array_walk() 结合起来迭代键并执行

结论

根据您的具体需求,您可以选择最合适的方法来合并多个数组并对共享键的值求和。无论是使用自定义函数、错误抑制、数组映射还是它们的组合,这些解决方案都提供了一种简洁有效的方法来实现所需的结果。

以上是如何在 PHP 中合并多个关联数组和共享键的求和值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn