2012-09-18 32 views
0

我想知道是否可以爲下面的PHP腳本做一些性能調優。我想要做的是從00:00到23:30每半小時進入一個選擇清單。這裏是代碼性能調整PHP時間查詢

<?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); 
?> 

我相信有一種方法,我們可以做到這一點更容易 - 但我想不起來。有人可以幫忙嗎?

+5

你可以硬編碼他們,因爲......嗯,他們不經常改變;) – KingCrunch

+0

是 - 漂亮的建議。謝謝! – foxybagga

回答

1
foreach (range(0, 60*24, 30) as $minutes) { 
    echo '<option>' . date('H:i a', strtotime('00:00 +' . $minutes . ' minutes')) . '</option>'; 
} 
+0

工程就像一個魅力! – foxybagga

3

除了硬編碼值,你可以失去所有的DateTimeTimeInterval對象,並使用一個簡單的循環:

for ($h=0;$h<24;$h++) { 
    echo '<option>' + sprintf ("%02d", $h) + ':00</option>'; 
    echo '<option>' + sprintf ("%02d", $h) + ':30</option>'; 
} 
+0

智能使用。謝謝! – foxybagga

2

如果性能是你追求的,硬編碼的時間字符串可能你可以做的最好的事情。

既然他們不會改變,你真的不需要他們動態,你會嗎?

+0

剛纔提到:您(OP)可以使用您的腳本來創建硬編碼列表。 – KingCrunch

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>