7

次の for ループがあります。月曜日から日曜日まで、それぞれ 0 から 6 の値を使用します。

これを行うためのより凝縮された方法はありますか?をリストアップするのではなく、if ($i=="day")

// $i = 0 is monday... $i = 6 is Sunday
for($i=0;$i<7;$i++){

    if ($i==0)
        echo ' <input name="repeat_on_week[]" type="checkbox" value="0"  /> Monday';
    if ($i==1)
        echo ' <input name="repeat_on_week[]" type="checkbox" value="1" /> Tuesday';
    if ($i==2)
        echo ' <input name="repeat_on_week[]" type="checkbox" value="2" /> Wednesday';
    if ($i==3)
       echo ' <input name="repeat_on_week[]" type="checkbox" value="3" /> Thursday';
    if ($i==4)
       echo ' <input name="repeat_on_week[]" type="checkbox" value="4" /> Friday';
    if ($i==5)
        echo ' <input name="repeat_on_week[]" type="checkbox" value="5" /> Saturday';
    if ($i==6)
        echo ' <input name="repeat_on_week[]" type="checkbox" value="6" /> Sunday';

}
4

7 に答える 7

16

どうですか:

$days = array('Monday', 
              'Tuesday', 
              'Wednesday', 
              'Thursday', 
              'Friday', 
              'Saturday', 
              'Sunday'
        );

for($i = 0; $i < 7; $i++) {
   echo '<input name = "repeat_on_week[]" type = "checkbox" value = "' . $i . '" />' . $days[$i];
}

または、foreach;を使用します 目には簡単で、配列の長さを把握する必要はありません。

for($days as $i => $day) {
   echo "<input name = \"repeat_on_week[]\" type = \"checkbox\" value = \"$i\" /> $day";
}

「これを行うにはもっと良い方法が必要だ!」と思ったのは良い兆候です。。それはあなたが正しい方向に動いていることを意味します*。ただし、配列の概念と、それらを使用するのが適切な場合についてもブラッシュアップすることをお勧めします。

*優れたプログラマーは、常に自分のコードがダメだと考えています。これは、優れたプログラマーが常に自分自身を向上させようとしているという別の言い方です。これは、優れたプログラマーが謙虚であるという別の言い方でもあります。

于 2010-06-10T18:16:44.477 に答える
4
$days = array(
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
    "Sunday");

for($i=0; $i<7; $i++){
    echo ' <input name="repeat_on_week[]" type="checkbox" value="' . $i . '"  /> ' . $days[$i];
}
于 2010-06-10T18:17:06.333 に答える
3

最初の方法:

$days = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");

for ($i=0; $i < 7; $i++) {
    echo ' <input name="repeat_on_week[]" type="checkbox" value="'.$i.'" /> '.$days[$i];
}

2番目の方法は、「日付」関数を使用してシステムから平日の名前を取得することですが、その計算を理解するのが面倒です...既知の平日に一致するタイムスタンプを指定してから、

date("l", $timestamp);
于 2010-06-10T18:16:58.423 に答える
1

ああ、誰もがすぐにこれを手に入れましたが、私は foreach ループを好むでしょう:

$days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
foreach ($days as $i => $day) {
       echo " <input name=\"repeat_on_week[]\" type=\"checkbox\" value=\"$i\" /> $day";
}
于 2010-06-10T18:19:14.017 に答える
0

文字列を含む switch ステートメントまたは配列を直接使用します。

于 2010-06-10T18:13:51.060 に答える
0

あなたのコードは、各行を順番に 1 回出力するだけです。ループがまったく必要ないように思えます。

于 2010-06-10T18:13:56.523 に答える