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];
}

第二种方法是使用“日期”函数从系统中获取工作日名称,但我懒得弄清楚那个计算......你会给它匹配已知工作日的时间戳,然后做

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 回答
1

嗯...... 4 年后,但我仍然决定分享一个解决方案 :) 请参见下文。

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

希望它可以帮助某人。

于 2014-09-02T12:13:25.237 回答
0

直接使用带有字符串的 switch 语句或数组。

于 2010-06-10T18:13:51.060 回答
0

您的代码只会按顺序打印出每一行。在我看来,您根本不需要循环。

于 2010-06-10T18:13:56.523 回答