DateTime对象的数组

时间:2014-05-30 23:15:56

标签: php arrays datetime

为什么数组中的所有日期都相同? 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);

http://ideone.com/XV9I4C

2 个答案:

答案 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);

DEMO

答案 1 :(得分:0)

您创建的数组包含对同一对象(您使用$start = new DateTime('01-01-2014');创建的对象)的多个引用,因此它们都是相同的。var_dump仅起作用,因为它输出对象的当前日期。