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

如何使用PHP在循环中获取每一年的第一天和最后一天

解决方案

你只需要在遍历年份的循环中,把动态年份变量代入时间计算逻辑即可,不需要手动逐个写年份配置:

基础实现(兼容低版本PHP)

基于你现有代码修改的版本:

$years = range(2015, date('Y'));
$chartData = []; // 存储最终给图表用的统计数据

foreach ($years as $year) {
    // 动态计算当前年份的第一天和最后一天
    $firstDayOfYear = date('Y-m-d', strtotime("first day of january {$year}"));
    $lastDayOfYear = date('Y-m-d', strtotime("last day of december {$year}"));
    
    // 这里补充你的活动统计逻辑,比如查询数据库中创建时间在两个日期之间的活动数量
    // $activityCount = 查询活动统计的方法($firstDayOfYear, $lastDayOfYear);
    
    // 组装数据,后续直接转JSON即可给前端图表使用
    $chartData[] = [
        'year' => $year,
        'count' => $activityCount ?? 0
    ];
    
    // 测试输出
    echo "{$year}年 活动数量:" . ($activityCount ?? 0) . "<br/>";
}

// 输出JSON给前端图表
// echo json_encode($chartData);

更稳定的DateTime实现(推荐)

如果你的PHP版本在5.2及以上,更推荐用DateTime类实现,避免时区配置或strtotime的边界问题:

$years = range(2015, date('Y'));
$chartData = [];

foreach ($years as $year) {
    $dateObj = new DateTime();
    // 当年第一天
    $dateObj->setDate($year, 1, 1);
    $firstDayOfYear = $dateObj->format('Y-m-d');
    // 当年最后一天
    $dateObj->setDate($year, 12, 31);
    $lastDayOfYear = $dateObj->format('Y-m-d');
    
    // 后续统计和数据组装逻辑和上面一致
}

拿到组装好的$chartData后,前端只要获取到JSON格式的该数据,即可直接传入ECharts、Highcharts等图表库,渲染年度活动数量的柱状图、折线图等可视化图表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:06:03