沃梦达 / 编程问答 / php问题 / 正文

如果php laravel中有相同的键,如何将关联数组中的值求和

How to sum values from associative array if there is the same key in php laravel(如果php laravel中有相同的键,如何将关联数组中的值求和)

本文介绍了如果php laravel中有相同的键,如何将关联数组中的值求和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如下所示的简单代码:

        $array = [
            [11 => 771725],
            [11 => 847226],
            [10 => 410035],
            [11 => 455387],
        ];
        dd($array);

输出:

10月(10日)结果有1价:

["410035"]

11月(11日)有3个价格:

["771725", "847226", "455387"]

和在12月(12)为无

我需要逻辑来计算10个月、11个月和12个月的所有价格。 预期输出为

[
    10 => "2074338",
    11 => "410035",
    12 => "0"
]

谢谢:)

推荐答案

我使用了Collection,最终得到了正确的结果。这可以通过以下几种方式实现:

方法1:

collect($array)
    ->groupBy(function ($item) {
        return collect($item)->keys()->first();
    })
    ->map(function ($items) {
        return collect($items)->flatten()->sum();
    });

方法2:

collect($array)
    ->groupBy(function ($item) {
        return array_key_first($item);
    })
    ->map(function ($items) {
      return collect($items)->flatten()->sum();
    });

方法3:

$default = [
    1 => 0, 
    2 => 0,
    3 => 0,
    4 => 0,
    5 => 0,
    6 => 0,
    7 => 0,
    8 => 0,
    9 => 0,
    10 => 0,
    11 => 0,
    12 => 0,
];

collect($array)
    ->reduce(function ($carry, $item) {
        $month = array_key_first($item);
  
        $carry[$month] += $item[$month];
  
        return $carry;
    }, $default);

这篇关于如果php laravel中有相同的键,如何将关联数组中的值求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如果php laravel中有相同的键,如何将关联数组中的值求和

基础教程推荐