我有一个数据范围,我需要从数据库中提取结果。通常的问题,不是每天都有记录,而且它会扭曲我的图表。我需要用0填充结果,并以最佳方式提出问题。
我有一个php例程,用正确的天数填充一个数组,并且需要循环遍历我的mysql.recordset插入值,如果在循环中当天有一个值插入数组,或者将其保留为零如果没有。
执行搜索/比较的最佳方法是什么,而不必循环遍历整个记录集,以查看我在循环中处理的日期是否有任何数据。
假设这是90天,这就是每天90个记录的循环(90 * 90,8100比较让我害怕)
数据集中的记录永远不会超过366条。
使用PHP最新版本。
答案 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.
然后循环遍历数组以进行输出。
或者,如果您可以更改查询,则可以创建所需日期的临时表,并将其加入到结果中,并将数据填入并填补空白。