PHP日期范围(不使用MySql日历表)

时间:2012-02-01 16:32:36

标签: php date range pad

我有一个数据范围,我需要从数据库中提取结果。通常的问题,不是每天都有记录,而且它会扭曲我的图表。我需要用0填充结果,并以最佳方式提出问题。

我有一个php例程,用正确的天数填充一个数组,并且需要循环遍历我的mysql.recordset插入值,如果在循环中当天有一个值插入数组,或者将其保留为零如果没有。

执行搜索/比较的最佳方法是什么,而不必循环遍历整个记录集,以查看我在循环中处理的日期是否有任何数据。

假设这是90天,这就是每天90个记录的循环(90 * 90,8100比较让我害怕)

数据集中的记录永远不会超过366条。

使用PHP最新版本。

1 个答案:

答案 0 :(得分:0)

创建2D关联数组,日期为第一维。因此,您创建一个数组$ allrecords,其中键是'2012-01-01'等,并且每个键的值都是一个关联数组,模仿数据的其他结构,其中包含零。因此,如果您的数据如下:

DATE        FIELDA   FIELDB   FIELDC
2012-01-01      10       20       30
2012-01-03       1        2        3

您创建数组

$allrecords["2012-01-01"]["FIELDA"]=0;
$allrecords["2012-01-01"]["FIELDB"]=0;
$allrecords["2012-01-01"]["FIELDC"]=0;
$allrecords["2012-01-02"]["FIELDA"]=0;
etc.

你只需要遍历数据集一次,做类似

的事情
$allrecords["2012-01-01"]["FIELDA"]=10;
$allrecords["2010-01-01"]["FIELDB"]=20;
$allrecords["2010-01-01"]["FIELDC"]=30;
get next record
$allrecords["2010-01-03"]["FIELDA"]=1;
etc.

然后循环遍历数组以进行输出。

或者,如果您可以更改查询,则可以创建所需日期的临时表,并将其加入到结果中,并将数据填入并填补空白。