У меня есть сортировка массива дат. Я хочу перейти от определенной даты начала к определенной дате окончания и увеличивать переменную каждый раз, когда я нахожу данную дату в массиве. Я попытался с помощью следующего фрагмента кода:PHP для цикла с объектами DateTime
$result = array();
$iterator = 0;
for ($minDateTime = new DateTime($minDate); $minDateTime <= new DateTime($maxDate); $minDateTime->add(new DateInterval('P01D'))) {
if ($minDateTime = $myDateArray[$iterator]) {
$iterator++;
}
array_push($result, "$minDateTime=>$iterator");
}
Если я хочу, чтобы запустить этот код, я получил следующее сообщение об ошибке:
Fatal error: Call to a member function add() on a non-object in /home/pivoecom/public_html/teszt/query_test.php on line 34
Где линия 34 находится на открытие для цикла. Я прочитал ссылку DateTime, и я уверен, что для нее есть метод добавления. Я попытался добавить день с этой линией вне цикла for, и это сработало ... Что я делаю неправильно?
Это кажется довольно озадачивающим. Несмотря на кажущуюся логическую ошибку с этим методом http://stackoverflow.com/questions/9282287/what-can-go-wrong-when-adding-months-with-a-dateinterval-and-datetimeadd, это, по-видимому, более загадочным. Вы уверены, что это работает, если вы смете вызов 'add' за пределы цикла? – verisimilitude
Я уверен. Я попробовал это, потому что мысль о том, что у моих веб-серверов слишком старый PHP. Но это сработало. – zsidanyi