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

PHP循环给指定日期累加3个月并存储到数组的问题排查

解决PHP循环累加3个月日期结果重复的问题

嘿,这个问题我太熟了!你遇到的问题核心很简单——每次循环都在拿原始的$starting日期加3个月,而不是在上一次生成的日期基础上继续累加,所以不管循环多少次,结果自然全都是同一个2015-09-01啦。

下面给你两种靠谱的解决方案:

方法1:迭代式累加(推荐处理边缘日期场景)

每次循环后更新当前日期,让下一次的累加基于上一次的结果:

$starting = "2015-06-01 00:00:00";
$store_date = array();
$current_date = $starting; // 初始化当前日期为起始日期

for ($i = 0; $i < 20; $i++) {
    // 先给当前日期加3个月,再存入数组
    $current_date = date('Y-m-d', strtotime($current_date . "+3 months"));
    $store_date[$i] = $current_date;
}

// 打印结果验证
print_r($store_date);

这种方式的优势是:遇到像2024-01-31这种月底日期时,strtotime会自动处理月份天数的问题(比如加1个月会变成2024-02-29,符合闰年规则),避免出现日期错误。

方法2:直接计算总累加月数

如果不需要考虑中间日期的迭代逻辑,也可以直接计算每次需要累加的总月数,基于原始起始日期一次性计算:

$starting = "2015-06-01 00:00:00";
$store_date = array();

for ($i = 0; $i < 20; $i++) {
    $total_months = 3 * ($i + 1); // 第1次加3个月,第2次加6个月,以此类推
    $store_date[$i] = date('Y-m-d', strtotime($starting . "+{$total_months} months"));
}

// 打印结果验证
print_r($store_date);

这种方式代码更简洁,适合不需要跟踪中间日期状态的场景。

两种方法运行后,你都会得到期望的递增日期数组:2015-09-01、2015-12-01、2016-03-01...以此类推直到第20个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:01:18