0

以下のPHPスクリプトのパフォーマンス調整を行うことができるかどうか疑問に思いました。私がやろうとしているのは、午前00:00から午後23:30まで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);
?>

もっと簡単な方法があると思いますが、考えられません。誰かが助けることができますか?

4

4 に答える 4

3

値をハードコーディングする以外に、すべてのオブジェクトとオブジェクトを失いDateTimeTimeInterval単純なループを使用することができます。

for ($h=0;$h<24;$h++) {
    echo '<option>' + sprintf ( "%02d", $h ) + ':00</option>';
    echo '<option>' + sprintf ( "%02d", $h ) + ':30</option>';
}
于 2012-09-18T08:11:10.037 に答える
2

パフォーマンスが求められている場合は、時間文字列をハードコーディングすることがおそらく最善の方法です。

それらは変わらないので、動的である必要はありませんね。

于 2012-09-18T08:11:46.067 に答える
1
foreach (range(0, 60*24, 30) as $minutes) {
    echo '<option>' . date('H:i a', strtotime('00:00 +' . $minutes . ' minutes')) . '</option>';
}
于 2012-09-18T08:11:30.810 に答える
1

日が24時間になるまで、あなたは良いol'を使うことができます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>
于 2012-09-18T08:13:35.673 に答える