0

データベースから結果を取得するために必要なデータ範囲があります。いつもの問題で、毎日記録があるわけではなく、チャートがゆがんでいます。結果を 0 で埋めて、最善の方法について質問する必要があります。

配列に正しい日数を入力するphpルーチンがあり、ループ内のその日の配列に値がある場合は値を挿入し、そうでない場合はゼロのままにする必要があります。

ループで処理している日付のデータがあるかどうかを確認するためにレコードセット全体をループすることなく、検索/比較を実行する最良の方法は何ですか?

90日あると仮定すると、それは毎日90件のレコードをループすることになります( 90*90 、 8100 の比較は私を怖がらせます)

データセット内のレコード数が 366 を超えることはありません。

PHP の最新バージョンを使用します。

4

1 に答える 1

0

日付を最初の次元として、2D 連想配列を作成します。したがって、キーが「2012-01-01」などである配列 $allrecords を作成します。これらのそれぞれの値は、データの他の構造を模倣する連想配列であり、全体がゼロです。したがって、データが次のようになっている場合:

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.

次のようにして、データセットを 1 回だけループします。

$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 に答える