我想知道我是否可以为下面的PHP脚本做一些性能调整。我想做的是 - 从凌晨00:00到下午23:30每半小时进入一个选择列表。这是代码
<?php
$starttime = '00:00';
$time = new DateTime($starttime);
$interval = new DateInterval('PT30M');
$temptime = $time->format('H:i');
do{
echo '<option value="">'.date("H:i a", strtotime($temptime)).'</option>';
$time->add($interval);
$temptime = $time->format('H:i');
}while ($temptime !== $starttime);
?>
我相信我们可以通过一种更轻松的方式来做到这一点 - 但我无法想到它。有人可以帮忙吗?
答案 0 :(得分:3)
除了对值进行硬编码之外,您可能会丢失所有DateTime
和TimeInterval
个对象并使用简单的循环:
for ($h=0;$h<24;$h++) {
echo '<option>' + sprintf ( "%02d", $h ) + ':00</option>';
echo '<option>' + sprintf ( "%02d", $h ) + ':30</option>';
}
答案 1 :(得分:2)
如果你正在追求性能,那么对时间字符串进行硬编码可能是你能做的最好的事情。
既然它们不会改变,你真的不需要动态,是吗?
答案 2 :(得分:1)
foreach (range(0, 60*24, 30) as $minutes) {
echo '<option>' . date('H:i a', strtotime('00:00 +' . $minutes . ' minutes')) . '</option>';
}
答案 3 :(得分:1)
直到24小时,你可以使用好的'for
:
<select>
<?php for($i = 0; $i < 48; $i++): ?>
<option><?php echo $i%2 == 0 ? ($i / 2) . ':00' : intval($i / 2) .':30'; ?></option>
<?php endfor;?>
</select>