2017-08-02 7 views
0

私のLaravelプロジェクトでは、次の7日間の配列を動的に作成したいと考えています。あなたはそれが同じ日付を出力見ることができるようにループ内に炭素の日付を反復する

Array 
(
[0] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[1] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[2] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[3] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[4] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[5] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

[6] => Carbon\Carbon Object 
    (
     [date] => 2017-08-09 00:00:00.000000 
     [timezone_type] => 3 
     [timezone] => UTC 
    ) 

) 

が、私は次の日付順にしたい:

$pickup_dates = []; 
    $today = Carbon::today(); 
    for ($i = 0; $i < 7; $i++) { 
     $pickup_dates[] = $today->addDay(); 
    } 
    dd($pickup_dates); 

しかし、私は次のようにデータに私の出力をダンプするDDを使用します。私は、セットアップを次しています7日。私は何を達成したいことはこれです:

  • 2017年8月3日
  • 2017年8月4日
  • 2017年8月5日
  • 2017年8月6日
  • 2017-08- 07
  • 2017年8月8日
  • 2017年8月9日

あなたは番目のは何か教えてもらえますこのコードは間違っていますか?あるいは、これを達成する他の方法がありますか?

$pickup_dates[] = $today->addDays($i);

以下雄弁方法:

$today = $today->addDay(); $pickup_dates[] = $today;

をこれらの必要性の両方を

答えて

0

同じCarbonオブジェクトを使って作業しているので、そのようにして出ています。

この

$pickup_dates = []; 
$today = Carbon::today()->toDateString(); 
for ($i = 0; $i < 7; $i++) { 
    $pickup_dates[]=Carbon::parse($today); 
     $today = Carbon::parse($today)->addDay()->toDateString(); 
} 
dd($pickup_dates); 

アウトは、これは非常にきれいである
enter image description here

+0

$ today変数を文字列に変換すると、各反復は非効率的です。その効果はごくわずかですが、あなたは同じ報酬のために余分な仕事をしています。 – DrRoach

1

は、あなたは、炭素は、あなたが追加しているどのように多くの日数を知らせることを確認する必要がありますあなたのループの内部で行われる。

+0

これは問題ではありませんが。問題は、日付シーケンスの代わりに出力と同じ日付(2017-08-09)を取得しています。私はより良い理解のために質問を編集しました。 –

+0

8月8日にコードを実行すると、$ today変数は常に8日であるため、結果が出力されます。したがって、1日追加すると常に9日が与えられます。上記の例を使用するか、上記のように各繰り返しを$ todayにリセットすることができます。 – DrRoach

+0

この解決法は簡単であり、コードはより少なくて済む – DestinatioN

0

として入れてみてください。

$pickup_dates = []; 
for ($i=0; $i<7; $i++) { 
    $pickup_dates[] = Carbon::now()->addDays($i); 
} 
dd($pickup_dates); 
関連する問題