为什么数组中的所有日期都相同? var_dump工作正常
$start = new DateTime('01-01-2014');
$end = new DateTime('07-01-2014');
$dates = array();
do {
var_dump($start);
array_push($dates, $start);
$start->add(DateInterval::createFromDateString('1 day'));
}
while ($start != $end);
print_r($dates);
答案 0 :(得分:1)
因为start在数组的每个元素中仍然是相同的对象实例:你将多个指针推送到同一个实例,而不是多个实例
$start = new DateTime('01-01-2014');
$end = new DateTime('07-01-2014');
$dates = array();
do {
var_dump($start);
array_push($dates, clone $start);
$start->add(DateInterval::createFromDateString('1 day'));
}
while ($start != $end);
print_r($dates);
答案 1 :(得分:0)
您创建的数组包含对同一对象(您使用$start = new DateTime('01-01-2014');
创建的对象)的多个引用,因此它们都是相同的。var_dump
仅起作用,因为它输出对象的当前日期。