在循环内迭代碳日期

时间:2017-08-02 10:25:40

标签: php date laravel-5 php-carbon

在我的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年8月7日
  • 2017年8月8日
  • 2017年8月9日

你能告诉我这段代码有什么问题吗?或者还有其他方法可以达到这个目的吗?

3 个答案:

答案 0 :(得分:1)

您需要确保让碳知道您要添加的天数:

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

或者说不那么雄辩的方式:

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

这两个都需要在你的循环中完成。

答案 1 :(得分:1)

你正在使用相同的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

答案 2 :(得分:0)

这更清洁:

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