У меня много таких ценностей:
+---------------------+-------+
| Date | value |
+---------------------+-------+
| 2015-05-22 13:10:59 | 23,99 |
| 2015-05-22 13:20:19 | 23,8 |
| 2015-05-26 17:30:00 | 8 |
| 2015-05-26 19:00:00 | 125 |
| 2015-05-27 05:00:00 | -73 |
| 2015-05-27 06:00:00 | 30 |
| 2015-05-27 15:00:00 | 32 |
| 2015-05-27 16:00:00 | 33 |
| 2015-05-28 10:45:00 | 3 |
| 2015-05-28 10:50:00 | 3 |
+---------------------+-------+
И учитывая определенный период (2015-05-20 -> 2015-05-30), чтобы включить все даты этого периода в список, мне нужно заполнить оставшиеся даты.
Для лучшего объяснения, я хочу что-то вроде этого:
+---------------------+-------+
| Date | value |
+---------------------+-------+
| 2015-05-20 00:00:00 | null |
| 2015-05-21 00:00:00 | null |
| 2015-05-22 00:00:00 | null |
| 2015-05-22 13:10:59 | 23,99 |
| 2015-05-22 13:20:19 | 23,8 |
| 2015-05-23 00:00:00 | null |
| 2015-05-24 00:00:00 | null |
| 2015-05-25 00:00:00 | null |
| 2015-05-26 00:00:00 | null |
| 2015-05-26 17:30:00 | 8 |
| 2015-05-26 19:00:00 | 125 |
| 2015-05-27 00:00:00 | null |
| 2015-05-27 05:00:00 | -73 |
| 2015-05-27 06:00:00 | 30 |
| 2015-05-27 15:00:00 | 32 |
| 2015-05-27 16:00:00 | 33 |
| 2015-05-28 00:00:00 | null |
| 2015-05-28 10:45:00 | 3 |
| 2015-05-28 10:50:00 | 3 |
| 2015-05-29 00:00:00 | null |
| 2015-05-30 00:00:00 | null |
+---------------------+-------+
Я знаю, как сделать это с помощью кода, но у него много недостатков, поэтому я ищу библиотеку для этого.
Есть идеи о какой-либо библиотеке PHP для работы с такими вещами?
Хорошо, я не могу получить библиотеку, но это очень просто сделать в php, просто используйте функцию, которая дает вам массив со всеми датами:
function getDatesFromRange($start, $end){
$dates = array($start);
while(end($dates) < $end){
$dates[] = date('Y-m-d', strtotime(end($dates).' +1 day'));
}
return $dates;
}
используйте результат в качестве ключей:
$dateArray = array_fill_keys(getDatesFromRange($start, $end), null);
А затем используйте результат вашего запроса MySQL, чтобы установить реальные значения. Так что это менее 10 строк кода, я думаю, что библиотека будет Overkill ..
И если вы используете функцию getDatesFromRange только для этой цели, вы можете даже сократить ее еще …
Других решений пока нет …