PHP库填充给定时期的日期数组?

时间:2016-09-23 09:20:00

标签: php period

我有很多这样的价值观:

+---------------------+-------+
|        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库的想法都可以使用这样的东西吗?

1 个答案:

答案 0 :(得分:1)

好的我无法让你成为一个库,但是在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函数,您甚至可以将其缩短...