我正在尝试对另一个数组提供的特定范围内的数组值求和。
我已经尝试过使用此功能
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"]
这里只是个注释,这个数组要大得多,但是我只是出于疑问的目的而将其缩写。
答案 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);
?>