首先,感谢允许我提出这个问题,我有一个非常奇怪的问题,我一直在试图找出脚本中错误的来源大约三个小时,最后我找到了一些东西,现在我知道了源代码问题,但不知道如何解决问题,代码给了我这个错误“不能使用 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 的代码时,我得到了代码的预期结果,但不知道是什么让这个代码起作用,第一个给了我这个错误
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
我刚刚解决了我的问题,我想知道为什么它没有给我预期的结果,尽管我使用dd()laravel 的die 和 dump函数找到了预期的结果所以我想如何才能达到这个结果,所以我发现该dd()函数返回一个值所以我在同一个类中创建了一个方法并返回了$monthlyDates我的应用程序需要的方法,现在它就像一个魅力
protected function getMonthlyDates($firstTerm , $secondTerm)
{
$monthlyDates = [];
foreach ($firstTerm as $value) {
$monthlyDates[] = ['date' => strtotime($value->format('Y-m-d')), 'due' => strtotime($value->format('Y-m-d'))];
}
foreach ($secondTerm as $value) {
$monthlyDates[] = ['date' => strtotime($value->format('Y-m-d')), 'due' => strtotime($value->format('Y-m-d'))];
}
return $monthlyDates;
}
希望这会帮助某人
- 1 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消