我需要编写一个函数,它将温度作为输入,并返回一个字典,字典的键为年份,值为天数。
CSV文件(年、月、日、小时、温度):
2019,1,1,0,0.1
2019,1,1,1,0.4
2019,1,1,2,0.8
2019,1,1,3,1.3
2019,1,1,4,1.8
...
2020,1,1,0,-3.9
天数是由另一个函数计算的,我已经有了这个函数。它需要一年和一个温度,然后返回给定年份中温度等于或低于给定温度的天数。由于数据是关于小时而不是天的,所以找到小时数,然后除以24。
该功能:
function getDaysUnderTemp(int $targetYear, float $targetTemp): float {
$file = fopen("data/temperatures-filtered.csv", "r");
$hours = 0;
while ($data = fgetcsv($file)) {
if ($data[0] == $targetYear and $data[4] <= $targetTemp) {
$hours ++;
}
}
fclose($file);
return $hours / 24;
}
例如,getDaysUnderTemp(2019, -10)
返回13.92
。
这是一个功能,我问,因为我不知道它可能是怎么做的:
function getDaysUnderTempDictionary(float $targetTemp): array {
$file = fopen("data/temperatures-filtered.csv", "r");
while ($data = fgetcsv($file)) {
???
}
fclose($file);
return [];
}
问题是我不明白如何在这个新函数中实现一个已经编写好的函数,然后从所有这些数据中创建一个所需的字典。
预期输出:
getDaysUnderTempDictionary(-10);
Array
(
[2019] => 3.88
[2020] => 0.21
[2021] => 13.92
)
1条答案
按热度按时间rkkpypqq1#
如果我这样做,我会以原始形式将所有数据读入一个数组,然后生成我需要的任何其他结构。
我将把它写成一个类:
你可以这样称呼它: