如何对循环中某些索引的数组中的值求和

时间:2019-08-31 09:00:21

标签: php arrays

我正在尝试对另一个数组提供的特定范围内的数组值求和。

我已经尝试过使用此功能

function sumArray($array, $min, $max) {
    $sum = 0;
    foreach ($array as $k => $v) {
       if ($k >= $min && $k <= $max) {
          $sum += $v;
       }
    }
    return $sum;
 }

这当然可以,如果我对数字进行硬编码,但是我不知道如何使它循环工作

所以我有这个日期数组

array(3) {
  ["June"]=> int(4)
  ["July"]=> int(31)
  ["August"]=> int(29)
}

我有这个daily_values数组

array(64) {
  [0]=> int(8)
  [1]=> int(6)
  [2]=> int(10)
  [3]=> int(15)
  [4]=> int(10)
  [5]=> int(9)
  [6]=> int(9)
  .
  .
  .
  [63] => int(10)

现在我要在这里做的是: 基于例如6月的多少个条目(在这种情况下为4),我想这样获得daily_values数组中的值之和:

第一次循环迭代将daily_values数组中的值相加从0到3,第二次循环迭代将值相加从4到34,第三循环迭代将值相加从35到63,依此类推。

所以我要从这一切中得到的最后一件事是拥有一个像这样的数组

["sum of 0,3", "sum of 4,34", "sum of 35,63"]

这里只是个注释,这个数组要大得多,但是我只是出于疑问的目的而将其缩写。

1 个答案:

答案 0 :(得分:0)

我试图理解您的问题,这就是我想您要实现的目标。 我创建了一个类似的测试,它工作正常。希望它能对您有所帮助。

<?php

$june = [1,1,1,1];
$july = [1,1];
$august = [1,1,1,1];

$months = array(
    'June' => $june, 
    'July' => $july, 
    'August' => $august, 
);

$daily = [1,1,1,1,5,5,10,10,10,10,2,2,2,2,2];
$sum_arr = array();

$i = 0;
foreach($months as $key=>$month){

    $month_count = $month;
    $month_sum = 0;
    while($month_count > 0){
        $month_sum += $daily[$i];
        $i++;
        $month_count--;
    }
    $sum_arr[$key] = $month_sum;
}

echo '<pre>';
print_r($sum_arr);

?>