2017-09-05 76 views
0

现在我的程序使用for loop生成日期数组。我想要做的是单独回显日期。如何回复日期数组中的单个日期?

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

我曾尝试初始代码

// 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>"; 
    } 

初始输出

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

试用输出

1505426400 
1506031200 

我怎样才能做到这一点?

+0

要么改变把日期数组包含'日期( “年月日”,$日期)代码;'或做输出 – rtfm

+1

将数组中的值转换为日期格式时,可以覆盖/修改数组中的值(您可以通过引用传递'foreach($ date as&$ date)',注意'&'),或者当你输出数值'echo date(“Ymd”,$ dates [0])时,从时间戳转换为日期字符串。 );' – Qirel

+0

我正在投票结束这个问题,因为OP知道使用哪个函数来设置时间戳的格式,并且根本没有这样做。这使得问题(和页面)对于未来的读者来说是低价值。 – mickmackusa

回答

2

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

替代品1:输出格式从时间戳

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

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

替代方法2:改变所述阵列中的元件

或者,也可以当循环通过它改变foreach数组中的值。如果通过引用,则可以使用&(表示变量是引用而不是副本)更改循环内元素的值。这意味着你现在在数组中有日期字符,而不是时间戳。

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

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

echo $dates[0]; 

您应该只适应其中一种替代方案,以最适合您的应用的方式。

0

试试这个

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

一个很好的答案会解释代码,而不仅仅是转储代码。 – rtfm

+0

虽然答案总是值得赞赏的,但它确实有助于提供一些关于**代码如何解决手头问题的其他信息。这样做可以帮助那些具有类似(但不完全相同)问题的人。不是每个人都可能熟悉你的确切编码逻辑,但可以理解你的一般*方法*或*概念*。为了帮助改进您的答案,请提供一些[**环境**](https://meta.stackexchange.com/questions/114762),并参阅关于[**写出重要答案**]的帮助文章( http://stackoverflow.com/help/how-to-answer)关于如何让你的答案数:)的一些提示 –

相关问题