使用PHP生成这个html代码有一个更短的方法吗?
基本上它只是一个带有数小时工作选项的选择输入(每30分钟是另一个选项)。
<select>
<option value="0" selected="selected" >From:</option>
<option value="8:00" >8:00</option>
<option value="8:30" >8:30</option>
<option value="9:00" >9:00</option>
<option value="9:30" >9:30</option>
<option value="10:00" >10:00</option>
<option value="10:30" >10:30</option>
<option value="11:00" >11:00</option>
<option value="11:30" >11:30</option>
<option value="12:00" >12:00</option>
<option value="12:30" >12:30</option>
<option value="13:00" >13:00</option>
<option value="13:30" >13:30</option>
... And so on up to 7:30 ...
<option value="7:30" >7:30</option>
</select>
答案 0 :(得分:2)
这很有效。可能要小一些。
while ($o <= 47) {
$date = new DateTime("08:00:00");
$date->add(new DateInterval("PT".($o*30)."M"));
echo '<option value="'. $date->format('H:i') .'" >'. $date->format('H:i') .'</option>';
$o ++;
}
循环是四十七,因为有24 * 2的增量减去一小时。
将输出以下内容:
<select>
<option value="08:00" >08:00</option><option value="08:30" >08:30</option><option value="09:00" >09:00</option><option value="09:30" >09:30</option><option value="10:00" >10:00</option><option value="10:30" >10:30</option><option value="11:00" >11:00</option><option value="11:30" >11:30</option><option value="12:00" >12:00</option><option value="12:30" >12:30</option><option value="13:00" >13:00</option><option value="13:30" >13:30</option><option value="14:00" >14:00</option><option value="14:30" >14:30</option><option value="15:00" >15:00</option><option value="15:30" >15:30</option><option value="16:00" >16:00</option><option value="16:30" >16:30</option><option value="17:00" >17:00</option><option value="17:30" >17:30</option><option value="18:00" >18:00</option><option value="18:30" >18:30</option><option value="19:00" >19:00</option><option value="19:30" >19:30</option><option value="20:00" >20:00</option><option value="20:30" >20:30</option><option value="21:00" >21:00</option><option value="21:30" >21:30</option><option value="22:00" >22:00</option><option value="22:30" >22:30</option><option value="23:00" >23:00</option><option value="23:30" >23:30</option><option value="00:00" >00:00</option><option value="00:30" >00:30</option><option value="01:00" >01:00</option><option value="01:30" >01:30</option><option value="02:00" >02:00</option><option value="02:30" >02:30</option><option value="03:00" >03:00</option><option value="03:30" >03:30</option><option value="04:00" >04:00</option><option value="04:30" >04:30</option><option value="05:00" >05:00</option><option value="05:30" >05:30</option><option value="06:00" >06:00</option><option value="06:30" >06:30</option><option value="07:00" >07:00</option><option value="07:30" >07:30</option></select>
答案 1 :(得分:1)
为了好玩:
foreach(range(strtotime('8:00'), strtotime('19:30'), 1800) as $time) {
$val = date('g:i', $time);
echo '<option value="'.$val.'">'.$val.'</option>';
}
如果在更改夏令时的日期/时间运行此操作,则无法正常运行。你可以通过设置一个没有夏令时的时区来缓解这种情况:
date_default_timezone_set('UTC');
答案 2 :(得分:0)
您可以使用for
循环来回显<option>
代码,并像这样生成时间。
<select>
<option value="0" selected="selected" >From:</option>
<?
$hour = 7;
$min = 30;
for ($x=0;$x < 48;$x++) {
if ($min < 30) {
$min += 30;
} else {
if ($hour < 24) {
$min = 0;
$hour += 1;
} else {
$hour = 1;
$min = 0;
}
}
$hour = sprintf("%02d", $hour);
$min = sprintf("%02d", $min);
echo '<option value="'.$hour.':'.$min.'">'.$hour.':'.$min.'</option>';
}
?>
</select>
注1 :未经测试,可能无法正常使用 注2 :我也知道,“它不短!”
我在单位数字之前添加了前导零以匹配您的格式。
答案 3 :(得分:0)
例如:
<?php
$start = 8 * 60 * 60;
$step = 30 * 60;
$opts = '';
for ($i = 0; $i < 10; $i++) {
$time = date('H:i', $start + $i * $step);
$opt = <<<OPT
<option value="{$time}">{$time}</option>
OPT;
$opts .= $opt;
}
echo <<<OPTS
<select>
<option value="0" selected="selected" >From:</option>
{$opts}
</select>
OPTS;