大量选择下拉列表PHP填充-页面加载缓慢

大量选择下拉列表PHP填充-页面加载缓慢,php,performance,drop-down-menu,Php,Performance,Drop Down Menu,我有许多下拉列表,每个下拉列表通过简单的数字循环填充(此时不涉及数据库) 如图所示: 每一个都包含从08:00到24:00(0:00)的时间 我使用了我通常的创建循环的方法来响应选项,但是,由于选项的数量,页面速度会非常慢 我想知道是否有更好的方法 下面是我的PHP函数,用于响应选项: function printHours($interval = 30, $selected = "07:00", $start = "0") { $selected = date("G:i", strt

我有许多
下拉列表,每个下拉列表通过简单的数字循环填充(此时不涉及数据库)

如图所示:

每一个都包含从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>';
}
函数打印小时数($interval=30,$selected=“07:00”,“$start=“0”){
$selected=日期(“G:i”,标准时间($selected));
对于($i=$start;$i<24;$i++){
对于($j=0;$j<59;$j+=$interval){
$time=str_替换(“:0”,“:00”,“$i:$j”);
回显“.$time.”;
}
}
回声“0:00”;
}

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

类似于以下内容:

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>';
    }
}
打印时间(30,'12:00,'08:00');
函数printHours($interval=30,$selected='',$start='00:00',$end='24:00'){
$period=new\DatePeriod(
new\DateTime($start),
\DateInterval::createFromDateString('30分钟'),
new\DateTime($end));
foreach($period作为$interval){
$time=$interval->format(“H:i”);
回显“”,$time“”;
}
}

有多少个选项?我无法想象这段代码会让它慢很多。
interval
中存储了什么值?在我看来,这些类似于自定义javascript下拉框。更可能是javascript而不是php导致性能问题。它是一个手风琴式界面,因此在其他部分中会有更多的下拉列表,每个下拉列表大约有40个选项,生成大量html。@Novocaine88这是一个很好的观点,实际上,它们是zurb foundation framework的框,我没有想到,我会尝试禁用,并检查它是否更好。我想它会将每一个都翻译成
并列出项目,所以很有可能。你是对的,没有额外的javascript,速度大约快了三倍,谢谢!使用一个
ob\u start
或类似的命令,我接受它?不,只需将输出附加到一个变量中,并使用.=代替回音。我会使用数组,因为你需要能够为所选的检查单独匹配每一个。是的,我只是想添加关于所选问题的内容,如果我使用数组,我肯定会回到相同的问题上来?如果说有什么区别的话,在性能方面,通过标准数字循环(原始方法)比通过数组循环要好。@Charlie因为性能问题不太可能是由这些循环引起的,所以实际上并不重要。我只是在回答这个问题;)