Мне нужно создать программу, которая берет все шоу от данного исполнителя и группирует их шоу в «посещения», которые будут определены как группа шоу, происходящих в последовательные даты. Приведенные ниже объекты dateTime являются подмножеством большого списка, который я склеил для краткости этого поста.
Array (
[0] => DateTime Object
(
[date] => 2017-04-22 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
[1] => DateTime Object
(
[date] => 2017-04-21 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
[2] => DateTime Object
(
[date] => 2015-04-18 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
)
У меня есть список объектов даты и времени, и мне нужен алгоритм, который поместит объекты даты и времени в двумерный массив на основе размера интервала между каждой датой. Если интервал между двумя объектами datetime больше 1 дня, то создайте массив внутри большего массива. Если интервал меньше 1 дня, добавьте объект datetime в массив, на который в данный момент установлен указатель. Приведенный ниже алгоритм создал многомерный массив dateTime за интервал из трех объектов dateTime ранее.
$incrementKey = 0;
foreach ($datesIntervalArray as $d) {
if ($d->days > 1) {
$incrementKey++;
}
$groupsOfVisits[$incrementKey][] = $d;
Array
(
[0] => Array
(
[0] => DateInterval Object (1/1/2017)
(
[days] => 1
)
[1] => DateInterval Object (1/2/2017)
(
[days] => 1
)
[1] => Array
(
[0] => DateInterval Object (2/1/2017)
(
[days] => 1
)
)
Итак, мой вопрос: как я могу взять эту информацию и создать массив в формате второго массива (с объектами dateInterval), но с информацией из первого массива (dateTime)? Я не смог выяснить, как преобразовать обратно из dateInterval в dateTime. Есть ли способ сделать это без необходимости конвертировать в dateInterval? Я чувствую, что я близко, но потратил безбожное количество часов на это. Заранее спасибо!