You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于CSV数据实现按年份统计低温天数的字典生成函数

PHP函数:getDaysUnderTempDictionary实现

实现方案

下面提供两种实现方式,分别对应复用已有函数和直接处理CSV的场景:

方案一:复用getDaysUnderTemp函数

先从CSV中提取所有唯一年份,再逐个调用已有函数统计对应年份的低温天数,最终整理为目标格式数组。

function getDaysUnderTempDictionary($targetTemp) {
    // 替换为你的CSV实际路径
    $csvFilePath = 'temperature_records.csv';
    $uniqueYears = [];

    // 读取CSV收集所有唯一年份
    if (($fileHandle = fopen($csvFilePath, 'r')) !== false) {
        // 跳过表头行
        fgetcsv($fileHandle);
        while (($row = fgetcsv($fileHandle)) !== false) {
            $year = (int)$row[0];
            if (!in_array($year, $uniqueYears)) {
                $uniqueYears[] = $year;
            }
        }
        fclose($fileHandle);
    }

    $result = [];
    // 遍历年份调用已有函数统计
    foreach ($uniqueYears as $year) {
        // 复用getDaysUnderTemp函数,传入年份和目标温度
        $coldDays = getDaysUnderTemp($year, $targetTemp);
        // 保留两位小数匹配示例格式
        $result[$year] = round($coldDays, 2);
    }

    return $result;
}

方案二:直接处理CSV文件(无依赖)

无需依赖已有函数,直接遍历CSV数据按年份累计符合条件的小时数,最后转换为天数。

function getDaysUnderTempDictionary($targetTemp) {
    $csvFilePath = 'temperature_records.csv';
    $yearHourStats = [];

    if (($fileHandle = fopen($csvFilePath, 'r')) !== false) {
        // 跳过表头
        fgetcsv($fileHandle);
        while (($row = fgetcsv($fileHandle)) !== false) {
            $year = (int)$row[0];
            $currentTemp = (float)$row[4];

            // 累计符合低温条件的小时数
            if ($currentTemp <= $targetTemp) {
                $yearHourStats[$year] = isset($yearHourStats[$year]) ? $yearHourStats[$year] + 1 : 1;
            }
        }
        fclose($fileHandle);
    }

    // 转换小时数为天数并保留两位小数
    $finalResult = [];
    foreach ($yearHourStats as $year => $hours) {
        $finalResult[$year] = round($hours / 24, 2);
    }

    // 按年份升序排序(可选,让结果更规整)
    ksort($finalResult);

    return $finalResult;
}

使用示例

调用函数后将返回符合要求的数组:

Array
(
    [2019] => 3.88
    [2020] => 0.21
    [2021] => 13.92
)

注意:请根据实际场景修改代码中的CSV文件路径;若数据量较大,直接处理CSV的方案性能更优,避免多次读取文件。

内容的提问来源于stack exchange,提问作者fallguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:20:22