大量选择下拉列表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因为性能问题不太可能是由这些循环引起的,所以实际上并不重要。我只是在回答这个问题;)