我一直在努力遍历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 }
感谢。
答案 0 :(得分:1)
您可以找到一个示例ideone here。
基本上你当前的代码试图访问数组的date
上的成员变量$key
,所以它试图做类似的事情;
echo 0->date;
PHP并不完全明白你的意思,所以你不会得到你期望的输出。你想要做的是访问值(实际的DateTime
对象)并使用它来输出日期,就像这样;
echo $value->format('Y-m-d H:i:s');
您需要记住自己处理DateTime
个对象,因此只需尝试访问->date
就可以按预期工作。据我所知,DateTime
对象不允许您直接访问其属性,而是如果您想打印出日期,则必须使用它的公共函数->format()
您可以找到DateTime
here
修改:如上所述@barat,您现在不再需要$key => $value
,因为您没有尝试访问$key
,因此您可以省略$key
:
foreach ($calendar_days as $value) { ... }