在我的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天的日期序列。我想要实现的是:
你能告诉我这段代码有什么问题吗?或者还有其他方法可以达到这个目的吗?
答案 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);
答案 2 :(得分:0)
这更清洁:
$pickup_dates = [];
for ($i=0; $i<7; $i++) {
$pickup_dates[] = Carbon::now()->addDays($i);
}
dd($pickup_dates);