Создание двумерного массива, который группирует наборы объектов dateTime на основе интервала времени между каждым объектом dateTime - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно создать программу, которая берет все шоу от данного исполнителя и группирует их шоу в «посещения», которые будут определены как группа шоу, происходящих в последовательные даты. Приведенные ниже объекты 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? Я чувствую, что я близко, но потратил безбожное количество часов на это. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...