Intereting Posts
Laravel 5 имеет одну связь с привязкой формы mySQL выберите столбец MONTH Как определить IP-адрес сервера в PHP Как конвертировать запрос агрегации MongoDB в Laravel MongoDB от jenssegers Woocommerce – Предотвращение Добавление предметов из двух разных категорий в корзину PHP cURL требуется только для отправки и не ждать ответа Соответствие атрибуту SRC тега IMG с использованием preg_match загрузка из CSV и пересылка на другой URL-адрес Получить элемент в позиции N в массиве без цикла Загрузка больших файлов через php-функцию readfile не работает Функция PHP с открытым исходным кодом для преобразования координат UTM в широту и долготу? Каков наилучший способ разбить строку на массив символов Юникода в PHP? Пользовательское поле пользователя в WordPress (скрыто от пользователя) Оберните текст каждые 2500 символов в <div> для разбивки на страницы, используя PHP или javascript PHP / MySQL: динамический подготовленный оператор с запросом на вставку / обновление

Как создать диапазон дат из массива?

У меня есть файл JSON, содержащий значения определенного значения в разные моменты времени. В настоящее время это грязно и содержит много дубликатов. Я хотел бы очистить его, организовав дубликаты в диапазон дат.

Файл JSON структурирован следующим образом:

[ { "value": ".298", "time": "21 May 2015 1:18:06 AM" }, [...] { "value": ".298", "time": "21 May 2015 12:15:07 PM" }, { "value": ".046", "time": "21 May 2015 12:20:08 PM" }, [...] { "value": ".046", "time": "21 May 2015 12:30:15 PM" }, { "value": ".004", "time": "22 May 2015 8:55:06 PM" }, [...] { "value": ".004", "time": "22 May 2015 9:45:06 PM" } ] 

И я хотел бы получить результат:

 21/05 01:19:06 AM to 21/05 12:15:07 PM, value: .298 21/05 12:25:08 PM to 21/05 12:30:15 PM, value: .046 22/05 09:40:06 PM to 22/05 09:45:06 PM, value: .004 

Это код, который у меня есть до сих пор:

 foreach ($json as $sub) { if (isset($value)) { if ($value == $sub['value'] || $value == NULL) { $range[$i][] = [strtotime($sub['time']), $sub['value']]; } else { $i++; } } $value = $sub['value']; } foreach ($range as $daterange) { $begin = $daterange[0][0]; $end = $daterange[count($daterange)-1][0]; printf('%s to %s, value: %s', date('d/mh:i:s A', $begin), date('d/mh:i:s A', $end), $daterange[0][1] ); echo "<br/>"; } 

Код, который я опубликовал, работает по большей части, но при работе с большими массивами, которые содержат нулевые значения, у него, похоже, есть проблемы. Так как в дубликатах все еще есть.

Как я могу это исправить? Я уверен, что этот хакерский подход может быть значительно улучшен с использованием класса DateTime; Надеюсь, кто-то может показать мне, как это делается.