私は毎月の日をwhileループの中に書き込む、PHPで書かれたhtmlカレンダーに取り組んでいます。HTML whileループのPHP whileループ:各Whileループ反復で配列値をチェックするか、またはポストループ文字列処理を使用する必要がありますか?
月のそれぞれの日には、タグのペア内で、特定の日には、タグ内のtitle属性を必要としています。これらの日はMySQLデータベースから取得され、$ array($ day_number => $ quantity)のような配列に格納されます。
例アレイは次のようになります(=> 4 3 => 5、12 => 4、15 => 6、22 => 10、27 => 2、31)。配列には、数量がゼロでない日のキーしか含まれません。
私はこれを行うには2つの方法が考えられます。どちらがより効率的か、別の方法があるかどうか、私は思っています。
オプション1)は、対応する日含んでいるかどうかを確認するために、HTML作成ループの各反復で配列を確認してください。その場合は、適切なtitle属性をタグに追加します。
$day = 1;
while($day < 31) {
if(array_key_exists($day,$array)) {
echo "<td title=\"$array['$day'] spots available\">$day</td>";
}
else echo "<td title\"No spots available for this date\">$day</td>";
$day++;
}
2)その後、特殊なタイトル属性を挿入する文字列関数を使用して、文字列変数にカレンダー全体を置くためにループを使用します。だから私はのようなものを使用しています。
$day = 1;
while($day < 31) {
$month .= "<td>$day</td>";
$day++;
}
foreach($array as $day_number=>$quantity) {
$month = str_replace("<td>$day_number</td>","<td title=\"$quantity spots available\">$day_number</td>",$month)
}
このアプリケーションでは、いずれの方法も非常に迅速に行われますが、私の質問はより一般的です。基本的なHTMLを作成するループの後に文字列関数を使用する方が良いか、各繰り返しでチェック/処理する方が良いでしょうか?または、3番目に、最良の方法はありますか?
私は私のコーディングがいかに悪い見当がつかないので、私は完全にインターネットリソースを使って自分でPHPを学んできました。どんな助けもありがとうございます。
ありがとうございます。
$day = 1;
$strings = array();
while($day < 31) {
if (array_key_exists($day, $array)) {
$strings[$day] = $array['$day'] . " spots available";
} else {
$strings[$day] = "No spots available for this date";
}
$day += 1;
}
foreach ($strings as $day => $string) {
echo '<td title="' . $string . '">' . $day . '</td>';
}
それについてとても異なっているもの:
あなたの答えをありがとう。私は最適化についてはあまりにも難しく、優雅についてはあまり考えすぎていました。 私はいくつかのプログラミング作家のパフォーマンスの細部への奇妙な強調に追いついているようです。そして、100%効率の良いコードを書いても、それでも5ミリ秒で実行すると、私はまだ驚いています。私はあなたがそこで2つのプロセスを分けたのが好きですが、可能な限り多くのプロセスを組み合わせようと私の脳を悩ます傾向がありました。 あなたのアドバイスありがとう!私はそれを使用します。 –