iterator_to_array(日期对象)上的未定义属性

时间:2017-04-22 16:13:12

标签: php date iterator

使用此代码段:

$dt = new DateTime();
$periods = new DatePeriod($dt, new DateInterval('P1D'), 6);
$days = iterator_to_array($periods);
foreach($days as $day){
    echo 'current date: '.$day->date.'<br />';
}

我看到了这个错误:

  

注意:未定义的属性:DateTime :: $ date

无论如何,如果我在echo之前添加“print_r”:

$dt = new DateTime();
$periods = new DatePeriod($dt, new DateInterval('P1D'), 6);
$days = iterator_to_array($periods);
foreach($days as $day){
    print_r($day);
    echo 'current date: '.$day->date.'<br />';
}

我在页面上看到了print_r结果和echo的结果。 为什么呢?

1 个答案:

答案 0 :(得分:1)

我不确定,这可能是一个错误。但是您只需要使用这样的$day对象:

foreach($days as $day){
    echo $day->format('Y-m-d')."\n";
}

我猜测打印$day对象会以某种方式对其进行初始化,然后您就可以使用其成员变量。

PS。你真的不需要iterator_to_array来迭代DatePeriod对象。您可以执行foreach ($periods as $day)

之类的操作