У меня есть следующий для цикла. Это использует значения форма 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';
}
Как насчет:
$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";
}
Это хороший знак, что вы подумали "должен быть лучший способ сделать это!". Это значит, что вы двигаетесь в правильном направлении*. Но я бы также посоветовал подтянуть знания о понятиях массивов и о том, когда их целесообразно использовать.
*Хороший программист всегда думает, что его или ее код отстой, что является другим способом сказать, что хороший программист всегда пытается улучшить себя, что также является другим способом сказать, что хороший программист скромен.
Первый способ:
$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" для получения названий дней недели из системы, но мне лень вычислять эти вычисления ... вы должны указать ему метки времени, соответствующие известным дням недели, а затем сделать
date("l", $timestamp);
Либо используйте оператор switch, либо массив со строками напрямую.
$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:
$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";
}
Ваш код просто распечатывает каждую строку один раз по порядку. Мне вообще не кажется, что вам нужен цикл.