PHP从两个数组中获取每月销售额的总和

agxfikkp  于 2023-05-27  发布在  PHP
关注(0)|答案(1)|浏览(102)

我有两个数组,其中的键是相同的,一个是月/年,另一个是值:
阵列1:

['Apr 2023', 'Mar 2023', 'Apr 2023', 'Apr 2023', 'Feb 2023']

阵列2:

[833.00, 223.00, 829.00, 220.00, 498.00]

我需要找到每个月的总数:
2023年4月:1882.00
2023年3月:223.00
2023年2月:498.00
我尝试组合成一个多维数组,然后使用array_reduce,但我总是得到类型错误。我试着写了一系列函数来遍历数据,但我不知道如何将月/年与前一个条目进行比较。似乎我错过了一个明显的答案…有什么想法吗对于那些可能会说这个问题以前已经被回答过多次的人,我已经在网上搜索了好几个小时,还没有找到任何接近的答案。谢谢你!

ar7v8xwq

ar7v8xwq1#

迭代months数组,并使用该索引从另一个数组中获取金额,然后将其添加到月份的总和中。https://3v4l.org/uItTB上的示例

<?php

$months = [
    '2023-04',
    '2023-03',
    '2023-04',
    '2023-04',
    '2023-02',
];

$amounts = [
    833,
    223,
    829,
    220,
    498
];

$sums = [];

foreach($months as $i => $month) {
    if (!isset($sums[$month])) {
        $sums[$month] = 0;
    }
    
    $sums[$month] += $amounts[$i];
}

var_dump($sums);

产出:

array(3) {
  ["2023-04"]=>
  int(1882)
  ["2023-03"]=>
  int(223)
  ["2023-02"]=>
  int(498)
}

请注意,循环中的主要功能只是$sums[$month] += $amounts[$i];行。在此之前的if (!isset($sums[$month]))纯粹是为了避免PHP在尝试向数组添加值之前警告数组索引未定义-Warning: Undefined array key "2023-04"。你可以去掉那个条件句,它的功能仍然是一样的。如果你也想取消警告,你可以使用@操作符:@$sums[$month] += $amounts[$i];

相关问题