0

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

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

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

假设有 90 天,那就是每天循环 90 条记录(90*90,8100 比较让我害怕)

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

使用 PHP 最新版本。

4

1 回答 1

0

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

然后你遍历数组来做你的输出。

或者,如果您可以更改查询,您可以创建一个包含所需日期的临时表,并将其连接到结果中,并在填补空白的情况下将数据带入。

于 2012-02-01T17:07:50.013 回答