【问题标题】:undefined property on iterator_to_array (date object)iterator_to_array 上的未定义属性(日期对象)
【发布时间】:2017-04-22 16:13:11
【问题描述】:

有了这个sn-p:

$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 的结果。 为什么?

【问题讨论】:

标签: php date iterator


【解决方案1】:

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

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

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

PS。您实际上并不需要 iterator_to_array 来遍历 DatePeriod 对象。你可以简单地做类似foreach ($periods as $day)

【讨论】:

  • 对于foreach ($periods as $day),我收到了同样的通知。使用 day->format,它可以正常工作。
  • 您不应该收到通知,php.net 站点上的示例仅使用该循环。无论如何,只要您的代码有效:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2016-08-03
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多