首先,感谢允许我提出这个问题,我有一个非常奇怪的问题,我一直在试图找出脚本中错误的来源大约三个小时,最后我找到了一些东西,现在我知道了源代码问题,但不知道如何解决问题,代码给了我这个错误“不能使用 DateTime 类型的对象作为数组”我有这个代码
$academicYear = \academic_year::where('isDefault', 1)->first();
$firstTerm = new \DatePeriod(
new \DateTime($academicYear->firstterm_start_date),
new \DateInterval('P1M'),
new \DateTime($academicYear->firstterm_end_date)
);
$secondTerm = new \DatePeriod(
new \DateTime($academicYear->secondterm_start_date),
new \DateInterval('P1M'),
new \DateTime($academicYear->secondterm_end_date)
);
$monthlyDates = [];
foreach ($firstTerm as $key => $value) {
$monthlyDates[] = ['date' => strtotime((string)$value->format('Y-m-d')), 'due' => strtotime((string)$value->format('Y-m-d')) ];
}
foreach ($secondTerm as $key => $value) {
$monthlyDates[] = ['date' => strtotime((string)$value->format('Y-m-d')), 'due' => strtotime((string)$value->format('Y-m-d'))];
}
我在这里要做的只是获取两个日期之间的日期,间隔为一个月,并更改日期的结构以使其成为数组中的日期和到期日,并获取由此生成的这些日期的 unix 时间戳DatePeriod 类
所以奇怪的是,当我以这种方式尝试代码时,它给了我这个错误,因为这段代码的结果进入另一个 foreach 循环,当我尝试这个代码时,它给我"Cannot use object of type DateTime as array" ,当我得到die 和 dump 的结果dd($monthlyDates)并把它而不是动态获取日期的代码脚本工作正常,这里是
转储的值$monthlyDates
下面的代码是dd($monthlyDates)我使用的数组而不是 \DatePeriod 结果
$monthlyDates = [
0 => [
'date'=> 1569888000,
'due' => 1569888000
],
1 => [
'date' => 1572566400,
'due' => 1572566400
],
2 => [
'date' => 1575158400,
'due' => 1575158400
],
3 => [
'date' => 1580515200,
'due' => 1580515200
],
4 => [
'date' => 1583020800,
'due' => 1583020800
],
5 => [
'date' => 1585699200,
'due' => 1585699200
]
];
所以当我使用上面的这个数组而不是 \DatePeriod 的代码时,我得到了代码的预期结果,但不知道是什么让这个代码起作用,第一个给了我这个错误
白衣非少年