将Google Analytics每日访客JSON转PHP数组并按月汇总访客数
嗨,我来帮你搞定这个Google Analytics数据按月汇总的需求!咱们分两步走:先把JSON转成PHP数组,再按月份累加访客数,下面是完整的实现方案:
实现步骤
1. 读取并解析JSON数据
首先得把你的JSON文件转成PHP能处理的数组。假设你的JSON是标准结构(修正了你给出的示例格式,确保PHP能正确解析):
[ {"Dagindex": "1-1-2017", "Gebruikers": 96}, {"Dagindex": "2-1-2017", "Gebruikers": 116}, {"Dagindex": "17-1-2017", "Gebruikers": 130}, {"Dagindex": "1-2-2017", "Gebruikers": 89} ]
用这段PHP代码读取并解析它:
// 读取JSON文件内容,替换成你的实际文件路径 $jsonContent = file_get_contents('analytics-data.json'); // 转换为PHP关联数组 $dailyData = json_decode($jsonContent, true); // 检查JSON解析是否成功 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析出错啦:' . json_last_error_msg()); }
2. 按月汇总访客数
接下来遍历每日数据,把同一个月的访客数累加起来。这里要注意你的日期格式是日-月-年,必须用DateTime类指定格式解析,不然会搞混月份和日期:
$monthlyVisitors = []; foreach ($dailyData as $dayEntry) { // 解析日期,明确指定格式为d-m-Y(日-月-年) $date = DateTime::createFromFormat('d-m-Y', $dayEntry['Dagindex']); if (!$date) { continue; // 跳过无效的日期数据,避免程序崩溃 } // 用「年-月」作为键,避免跨年的同一个月被错误合并 $monthKey = $date->format('Y-m'); $visitors = (int)$dayEntry['Gebruikers']; // 累加对应月份的访客数 if (isset($monthlyVisitors[$monthKey])) { $monthlyVisitors[$monthKey] += $visitors; } else { $monthlyVisitors[$monthKey] = $visitors; } } // 可选:按时间顺序排序结果,让输出更直观 ksort($monthlyVisitors); // 打印汇总后的数组 print_r($monthlyVisitors);
预期输出
运行完上面的代码,你会得到类似这样的按月汇总结果:
Array ( [2017-01] => 1895 [2017-02] => 2103 [2017-03] => 2012 ... )
关键提示
- 日期格式不能错:一定要用
createFromFormat指定d-m-Y,否则PHP可能会把1-1-2017错误解析成其他格式的日期。 - 跨年处理要注意:用
Y-m作为月份的键,能完美区分不同年份的同一个月(比如2017年1月和2018年1月)。 - 容错机制不可少:添加了无效日期的跳过逻辑,避免个别异常数据导致整个程序中断。
内容的提问来源于stack exchange,提问作者Gurdt
相关产品推荐
相关产品推荐

