2017-08-02 72 views
0

在我的Laravel項目中,我想動態創建一個未來7天的數組。我有以下設置:在循環內迭代碳日期

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

但是當我用dd轉儲數據我的輸出如下:

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 
    ) 

) 

正如你可以看到它輸出相同的日期,但我想在未來的時間序列7天。我想實現的是:

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

你能告訴我什麼是日這個代碼錯了嗎?或者還有其他方法可以實現嗎?

回答

0

您正在使用相同的碳對象,這就是爲什麼你要這樣放。

試試這個

$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

你需要確保你讓碳知道你有多少天補充說:

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

還是少雄辯的語言:

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

這兩種需求在你的循環內完成。

+0

這是沒有問題的。問題是獲得相同的日期(2017-08-09)作爲輸出而不是日期序列。我編輯問題以獲得更好的理解。 –

+0

在8月8日運行你的代碼會導致你得到的輸出,因爲$ today變量總是第8,所以增加一天總是會給你第9。您可以使用上面的示例,也可以按照上面所示每次重置$。 – DrRoach

+0

此解決方案更簡單,需要的代碼更少 – DestinatioN

0

這是乾淨多了:

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