我有以下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';
}
答案 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)
您的代码只是按顺序打印出每一行一次。在我看来,你根本不需要循环。