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

如何合并和求和平面关联数组中共享键的值?

Patricia Arquette
发布: 2024-11-03 19:12:03
原创
716 人浏览过

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

对平面关联数组中的值进行合并和求和

问题:

您有多个平面关联数组并希望合并它们,将与匹配键关联的值添加在一起而不覆盖现有值。标准 array_merge() 函数以及简单的加法操作无法提供所需的行为。

解决方案:

合并关联数组并对值求和对于共享密钥,您可以使用以下方法之一:

1.循环组合键:

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

此方法循环组合数组的键,并将每个键的值累加到 $sums 数组中。

2.使用映射:

<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_map() 映射一个函数,该函数将与数组中每个键关联的值相加。数组。

3.辅助函数:

如果您经常需要执行此操作,您可以创建一个辅助函数:

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

此函数接受任意数量的数组并对共享的值求和键放入新数组中。

通过使用其中一种方法,您可以对平面关联数组中共享键的值进行合并和求和,从而产生所需的行为。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板