循环通过DateTime对象数组

时间:2016-04-04 09:44:23

标签: php

我一直在努力遍历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 } 

感谢。

1 个答案:

答案 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) { ... }