如何回应日期数组中的各个日期?

时间:2017-09-05 00:00:06

标签: php arrays date strtotime

现在,我的程序回显了使用for loop生成的日期数组。我想要做的是单独回复日期。

初始代码

 // initialize an array with your first date
    $dates = array(strtotime("+11 days", strtotime("2017-09-04")));

    for ($i = 1; $i <= 5; $i++) {// loop 5 times to get the next 5 dates

        // add 7 days to previous date in the array
        $dates[] = strtotime("+7 days", $dates[$i-1]);
    }

    // echo the results
    foreach ($dates as $date) {
        echo date("Y-m-d", $date);
        echo "<br>";
    }

初始输出

2017-09-15
2017-09-22
2017-09-29
2017-10-06
2017-10-13

我尝试了什么

echo $dates[0];//print first date
echo "<br>";
echo $dates[1];//print second date

试用输出

1505426400
1506031200

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

要么在输出元素时也需要使用date() - 因为它们仍然是数组中的时间戳(你不要在循环中改变任何东西,只打印元素),或者你需要循环时更改元素。

备选方案1:输出格式

在输出中从timestamp转换为datestring。这仍然会在数组中有时间戳。

echo date("Y-m-d", $dates[0]);

备选方案2:更改数组中的元素

或者,您可以在通过foreach循环时更改数组中的值。如果通过引用传递,则可以使用&更改循环内元素的值(这意味着变量是引用而不是复印件)。这意味着您现在在数组中有datetring,而不是时间戳。

foreach ($dates as &$date) {
    echo $date = date("Y-m-d", $date);
    echo "<br>";
}

如果您通过引用传递,您现在可以直接打印它,因为它将不再包含时间戳,因为我们将其更改为datestring。

echo $dates[0];

您应该只选择其中一种替代品,以最适合您的应用为准。

答案 1 :(得分:0)

试试这个

echo date("Y-m-d", ($dates[0])) . '<br>';
echo date("Y-m-d", ($dates[1])) . '<br>';