我一直在努力遍历php的对象。我在数组中有以下DateTime对象,但在迭代它时遇到了问题。我做错了什么?
// print_r($calendar_days);
Array
(
[0] => DateTime Object
(
[date] => 2016-04-06 00:00:00
[timezone_type] => 3
[timezone] => Europe/Helsinki
)
[1] => DateTime Object
(
[date] => 2016-04-13 00:00:00
[timezone_type] => 3
[timezone] => Europe/Helsinki
)
[2] => DateTime Object
(
[date] => 2016-04-20 00:00:00
[timezone_type] => 3
[timezone] => Europe/Helsinki
)
[3] => DateTime Object
(
[date] => 2016-04-27 00:00:00
[timezone_type] => 3
[timezone] => Europe/Helsinki
)
)
PHP
<?php foreach ($calendar_days as $key => $value){ ?>
<a href="#">
<div class="day-container">
<strong> <?php echo $key->date; ?></strong>
</div>
</a>
<?php }
谢谢。
您可以在这里找到一个ideone示例。
从本质上讲,您当前的代码正在尝试访问数组的$key
上的成员变量date
,因此它正在尝试执行以下操作:;
echo 0->date;
PHP并不完全理解你的意思,所以你不会得到你期望的输出。您想要做的是访问值(实际的DateTime
对象),并使用它来输出日期,就像这样;
echo $value->format('Y-m-d H:i:s');
您需要记住,您正在处理DateTime
对象,所以仅仅尝试访问->date
不会像您预期的那样工作。据我所知,DateTime
对象不允许你直接访问它的属性,相反,如果你想打印出日期,你必须使用它的公共函数,而不是->format()
你可以在这里找到DateTime
的完整文档
编辑:如@barat所述,您将不再需要$key => $value
,因为您没有尝试访问$key
,因此可以省略$key
:
foreach ($calendar_days as $value) { ... }