Во-первых, спасибо, что позволили мне задать этот вопрос. У меня действительно странная проблема: я пытался выяснить источник ошибки в моем скрипте около трех часов, и, наконец, я что-то достиг, теперь я знаю код, которыйявляется источником проблемы, но не знаю, как решить проблему, код дает мне эту ошибку "Не могу использовать объект типа 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, я получаю ожидаемый результат кода и не знаю, что делает этот код работающим, и первыйдавая мне эту ошибку