У меня есть файл 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; Надеюсь, кто-то может показать мне, как это делается.