进行以下循环的更简洁方式?

时间:2010-06-10 18:10:18

标签: php loops dayofweek

我有以下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';

}

7 个答案:

答案 0 :(得分: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";
}

这是一个好兆头,你认为“必须有更好的方法来做到这一点!”。这意味着你正朝着正确的方向前进 * 。但我还建议了解数组的概念以及何时使用它们。

* 一个优秀的程序员总是认为他或她的代码很糟糕,这是另一种说法,一个优秀的程序员总是试图改善自己的方式,这也是另一种说法{ {3}}

答案 1 :(得分: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];
}

答案 2 :(得分: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);

答案 3 :(得分: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";
}

答案 4 :(得分:1)

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

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

希望它有所帮助。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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