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

如何使用PHP分别统计2021年各月份子目录下JSON文件guests字段总和

问题原因分析

  • 第一个遍历月份目录的循环里,$monthfiles变量被反复覆盖,循环结束后只会保留最后一个月份的JSON文件列表,9、10月的文件直接被遗漏
  • 遍历文件的逻辑没有和月份绑定,全局累加的$arr每次加入新JSON后都会全量遍历,导致访客数被重复计算,也无法按月份区分统计结果

修复后的代码

// 读取2021年下所有月份目录
$monthdirs = array_filter(glob('data/2021/*'), 'is_dir');
$tot_guests_monthes = [];

foreach ($monthdirs as $monthdir) {
    // 初始化当月访客数为0
    $current_month_total = 0;
    // 获取当前月份下所有JSON文件
    $monthfiles = glob($monthdir . '/*.json');
    
    foreach ($monthfiles as $monthfile) {
        $json_data = json_decode(file_get_contents($monthfile), true);
        // 累加当日访客数,加容错避免字段缺失报错
        $current_month_total += $json_data['guests'] ?? 0;
    }
    
    // 存入当月总访客结果
    $tot_guests_monthes[] = $current_month_total;
}

// 按顺序输出三个月的总访客数
foreach ($tot_guests_monthes as $tot_guests_month) {
    echo $tot_guests_month . '<br />';
}

补充说明

  • 每个月份目录单独统计的逻辑,从根源避免了变量覆盖、重复累加的问题
  • 最终输出顺序和目录september、october、november的读取顺序一致,和你要求的9、10、11月统计结果顺序匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:05