合并关联数组时如何对共享键的值求和?

Barbara Streisand
发布: 2024-11-03 14:16:30
原创
167 人浏览过

How to Sum Values for Shared Keys When Merging Associative Arrays?

合并数组并对共享键值求和

在组合与共享键关联的值时,经常需要合并多个关联数组。默认情况下,数组合并会覆盖冲突的值,如提供的示例中所示。为了解决这个问题,我们提出了一系列方法,可以有效地为共享键添加值,同时保留唯一键。

使用数组中间体:

一种方法是计算使用数组中间值手动求和。这涉及迭代合并数组的键并对输入数组中每个键的值求和。

$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0);
}
登录后复制

映射和缩减:

另一种方法涉及为每个唯一键创建具有零值的中间数组。然后将它们与原始数组合并并映射以计算总和。

$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));
登录后复制

数组遍历:

类似地,您可以使用数组遍历来计算总和用于共享密钥。

$sums = array_fill_keys(array_keys($a1 + $a2), 0);
array_walk($sums, function (&$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));
登录后复制

具有动态参数的可重用函数:

最后,您可以创建一个可重用函数,它接受无限数量的数组并计算总和

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;
}
登录后复制

这些解决方案提供了合并多个关联数组并计算共享键值总和的有效方法,为各种场景提供了灵活性和代码可重用性。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!