我有许多<select>
个下拉列表,每个下拉列表通过简单的数字循环填充(此时不涉及数据库)。
见图:
每个都包含08:00至24:00(0:00)的时间。
我使用了我创建循环的常用方法来回显选项,但是,由于它们的数量,页面经历了相当糟糕的减速。
我想知道是否有更好的方法来解决这个问题?
这是我的PHP函数来回应选项:
function printHours($interval = 30, $selected = "07:00", $start = "0") {
$selected = date("G:i", strtotime($selected));
for($i=$start; $i < 24; $i++) {
for($j = 0; $j < 59; $j+=$interval) {
$time = str_replace(":0", ":00", "$i:$j");
echo '<option value="' . $time . '"';
if($selected == $time) {
echo ' selected="selected"';
}
echo '>' . $time . '</option>';
}
}
echo '<option value="0:00">0:00</option>';
}
答案 0 :(得分:0)
如果将这些字符串保存在变量而不是回显中,则只需要为所有这些下拉列表循环一次。
答案 1 :(得分:0)
这样的事情:
printHours(30, '12:00', '08:00');
function printHours($interval = 30, $selected = '', $start = '00:00', $end = '24:00') {
$period = new \DatePeriod(
new \DateTime($start),
\DateInterval::createFromDateString('30 minutes'),
new \DateTime($end));
foreach($period as $interval) {
$time = $interval->format( "H:i" );
echo '<option value="', $time, '"', $time === $selected ? ' selected' : '', '>', $time, '</option>';
}
}