私はこの乱雑なコードを書き直そうとしているので、1つのデータベースクエリを作成してforループを削除するだけです。私はコードが2つではなく1つのクエリで高速になることを期待しています。ループなしでこれをどのように書き直しますか?
ループは1つの理由で存在します。日付属性は、 "Today"または "Tomorrow"の後に書式設定された日付のいずれかです。
メインポイントここでは、データ構造(dayReport)を同じにしたいと考えています。結果セットがどの日付に属するかを知りたい(「今日」または「明日」のいずれか)。
その理由だけではループが愚かなようです。
ここにコードがあります。これは、PHPでだが、本当にこれは言語に依存しない質問です:あなたの目標は、Webアプリケーションとデータベース間のデータのやり取りを軽減する場合
for ($a=1; $a<=2; $a++)
{
$b = $a - 1;
$result = mysql_query("SELECT
name,
time,
date_format(time,'%M %d %Y %h:%i %p') as ftime,
date_format(time,'%l:%i %p') as ttime,
fee
FROM `foo_bar`
WHERE `cityId` = $cityId
AND time_utc > utc_timestamp()
AND time >= DATE_ADD(curdate(),INTERVAL $b day)
AND time < DATE_ADD(curdate(),INTERVAL $a day)
ORDER BY time ASC
") or die(mysql_error());
if ($result && mysql_num_rows($result) > 0)
{
$day = new Day();
$day->date = $a == 1 ? 'Today' . date(' - l, F d') : 'Tomorrow' . date(' - l, F d',strtotime('+'.$b.' day'));
$dayStuff = array();
while ($row = mysql_fetch_object($result))
{
$dayStuff[] = $row;
}
$day->foo = $dayStuff;
$dayReport[] = $day;
}
}
のようなもの。ループは私にとっては大丈夫です。 – alex