2017-09-05 12 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

を試してみてくださいどちらか '日付( "はYmd"、$日付)を含むように配列に日付を入れるコードを変更;'またはそれを行いますon出力 – rtfm

+1

配列の値を日付形式に変換するときに、配列の値を上書き/変更します(参照渡し、 'foreach($ dates as&$ date)'、 '&')値を出力するときにtimestampからdatestringに変換します。 'echo date(" Ymd "、$ dates [0] ); ' – Qirel

+0

私はOPがタイムスタンプをフォーマットするために使用する関数を知っていて単純にそれをしなかったので、この質問を議論の対象外とすることに投票しました。これは、将来の読者のために、質問(およびページ)を値下げすることになります。 – mickmackusa

答えて

2

要素を出力するときにもdate()を使用する必要があります。配列内のタイムスタンプ(要素を印刷するだけで要素を変更しない)、要素を変更する必要がありますあなたがそれらの上をループするとき。

オルタナティブ1:出力

上のフォーマットは、タイムスタンプからの出力に日付ストリングに変換します。これにはまだ配列にタイムスタンプがあります。 2

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

代替:

あるいは配列内の要素を変更し、次のときにループそれforeachを通じてアレイ内の値を変更することができます。 が参照渡しの場合、&を使用してループ内の要素の値を変更することができます(つまり、変数が参照であり、コピーではありません)。これは、タイムスタンプではなく、配列内に日付文字列を持つことを意味します。あなたが参照渡した場合、我々は日付ストリングにそれを変更するので、それはもはや、タイムスタンプが含まれていますよう

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

することは、あなたが今、それを直接印刷することはできません。

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)あなたの答えを数える方法に関するヒント –

関連する問題