0

我有许多<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>';
}
4

2 回答 2

0

如果将这些字符串保存在变量中而不是回显,则只需为所有这些下拉列表循环一次。

于 2013-10-11T10:54:48.993 回答
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>';
    }
}
于 2013-10-11T11:10:17.953 回答