现在,我的程序回显了使用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
我怎样才能做到这一点?
答案 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>';