我在forum上看到了这段代码:
$begin = new DateTime( $start_date );
$end = new DateTime(date("Y-m-d",strtotime("+1 day", strtotime($end_date))));
while($begin < $end) {
$period[] = $begin->format('Y-m-d');
$begin->modify('+1 day');
}
我想做OP正在询问的内容,即在不使用DateInterval
类的情况下创建1天的日期间隔,因为我没有使用PHP 5.3(我使用的是5.2)
然而,当我尝试使用$ period数组时,我收到一个错误:
未定义变量:期间
这是我的代码:
$start = new DateTime("09-09-2011");
$end = new DateTime("24-09-2011");
while($start < $end) {
$period[] = $start->format('Y-m-d');
$start->modify('+1 day');
}
print_r($period) //error - undefined variable
为什么它不起作用 - 是否将日期时间对象放入while循环?
答案 0 :(得分:1)
所以很容易定义
$period = array();
然而,这将永远不会发生在while循环=此代码无效
答案 1 :(得分:1)
$period
在您的while()
循环中定义。如果循环永远不会运行(即,如果$start < $end
永远不会计算为true
),则永远不会定义变量。
您可以通过在while()
循环之前显式定义变量来纠正此问题:
$period = array();
while($start < $end) {
...
答案 2 :(得分:0)
除非您使用的是PHP 5.2.2或更高版本,否则无法直接比较DateTime对象。如果您使用的是旧版本,那么您的while条件永远不会评估为true,您的循环将永远不会运行。因此,永远不会创建您的期间数组。
您可能必须从日期时间对象中提取日期的值,并以其他方式进行比较。
如果失败,您可以升级到更新版本的PHP。