我有一个 Carbon 对象的数组传递到视图中,如下所示:
return view('booking.choose-days')->with(['weekDays' => $weekDays]);
为了测试一切是否正常,我使用DD命令检查了数组,并发现日期数组已被正确传递:
array:14 [▼
0 => Carbon {#252 ▼
+"date": "2017-04-11 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
1 => Carbon {#257 ▼
+"date": "2017-04-12 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
2 => Carbon {#256 ▼
+"date": "2017-04-13 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
3 => Carbon {#255 ▼
+"date": "2017-04-14 00:00:00.000000"
+"timezone_type": 3
+"timezone": "Europe/London"
}
...and so forth
当使用以下方式(完整的HTML被省略)在Blade中遍历数组时:
@foreach ($weekDays as $key => $weekDay)
<tr id="{{ $key }}">
<td>
{{ $weekDay }}
</td>
</tr>
@endforeach
这将产生预期输出:
2017-04-11 00:00:00
2017-04-12 00:00:00
2017-04-13 00:00:00
2017-04-14 00:00:00
2017-04-15 00:00:00
...and so forth
然而,当输出如下所示时:
@foreach ($weekDays as $key => $weekDay)
<tr id="{{ $key }}">
<td>
{{ $weekDay->dayOfWeek }} // now accessing a property
</td>
</tr>
@endforeach
我收到这个输出:
1
1
2
2
2
与预期的 星期一,星期二,星期三
等不同,数组中的日期是正确的,当以 对象
的形式使用 var_dumped
进行访问时。但是,当访问像 dayOfWeek
这样的属性时,它会给出不正确的属性。
这些日期是通过首先从 URL 中读取 两个时间戳
- 开始日期
和 结束日期
生成的。然后,这两个值都存储在变量中并发送到一个函数中,以删除所有周末日期。
这是调用该函数的方法:
$weekDays = getWeekDays(Carbon::createFromTimestamp($startDate), Carbon::createFromTimestamp($endDate));
以下是函数代码:
function getWeekDays(Carbon $startDate, Carbon $endDate)
{
for($date = $startDate; $startDate->lte($endDate); $startDate->addDay()) {
if ($date->isWeekDay()) {
$weekdays[] = clone $date;
}
}
return $weekdays;
}
有什么想法吗?
谢谢。
$b = $a->addDay();
那么实际上会改变变量$a,$a和$b将是同一个变量!请告诉我们你是如何获取这些日期的? - lewis4uhttps://paste.laravel.io/kQ9O7 - Anar Bayramov