繁体   English   中英

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

[英]PHP Date range (not using MySql calendar table)

我有一个数据范围,需要从数据库中提取结果。 通常的问题是,并非每天都有记录,并且它歪曲了我的图表。 我需要用0填充结果,并且对最佳方法有疑问。

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

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

假设有90天,那就是每天遍历90条记录(90 * 90、8100比较这让我感到恐惧)

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

使用PHP最新版本。

创建一个二维关联数组,其中日期为第一维。 因此,您将创建一个数组$ 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.

然后,您遍历数组以执行输出。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM