0

「23」と言う特定の数に行き、再び「0」から始まるPHP forループが必要です。実際、私は 24 時間形式で時間のリストを作成したいと考えています。たとえば、午前 9 時から午前 2 時までの時間を表示する必要があるとします (つまり、9、10、11、12、13、14 など)。 ....23,0,1,2)

$i= range(0,23);//it doest work as it creates an array containing a range of elements
$start_time = 9;
$end_time = 2;
for ($i = $start_time ; $i<= $end_time ; $i++)
{
    echo $i;
}

方法を提案してください。

4

9 に答える 9

2

あなたのユースケースは時間に敏感な情報に言及しているので、dateandstrtotime関数 (またはDateTimeクラス) の使い方を学ぶのが最善かもしれません:

$time = strtotime('2013-09-14 02:00');
$endTime = strtotime('2013-09-15 09:00');

while ($time <= $endTime) {
    echo date('Y-m-d H:i:s', $time)."\n";
    $time = strtotime('+1 hour', $time);
}

// 2013-09-14 02:00:00
// 2013-09-14 03:00:00
// 2013-09-14 04:00:00
// 2013-09-14 05:00:00
// etc.
于 2013-09-19T10:29:43.490 に答える
0

モジュロを使用して、数値が 23 より大きい場合、数値から 24 を差し引くことができます。

$start_time = 9;
$end_time = 2;
for( $i = $start_time; $i % 24 != $end_time; $i++ )
{
    echo $i % 24;
}

これには注意が必要です。$end_time23 より大きい場合、無限ループに陥ります。

于 2013-09-19T10:28:43.680 に答える
0

あなたのアイデアを使って仕事をやり遂げました。実際に動いたコードはこちら。

$start_time = some_dynamic_value;
$end_time = some_dynamic_value;
$i= $start_time;
$flag = false;
if($start_time > $end_time)
$flag = true;
while ($i <= $end_time || $flag)
{
        echo $i;

        if($i == 24)
        {
                $i= 0;
                $flag = false;
        }
        $i++;
}
于 2013-09-20T06:28:48.207 に答える
0

再び回答が遅れました、これを試してください

<?php
$start_time = 20;
$end_time = 10;

$maxTime=23;
$minTime=0;


for ($i = $minTime ; $i<=$maxTime - abs($start_time-$end_time) ; $i++)
{
    $validTime= $start_time +  ($i % $maxTime);
    $validTime= $validTime>$maxTime?$validTime-$maxTime:$validTime;
    echo $validTime;

}

?>
于 2013-09-19T10:35:01.210 に答える
0

dateを使用する方が良いかもしれません:

$hours = 8;
for ($i=1; $i<=8; $i++){
  echo 'TIME1 = '.date("Y-m-d H:i:s",mktime (20+$i,15,18,06,05,2013)).'<br>';
}

またはそれ以上の DateTime クラス:

$date = DateTime::createFromFormat('Y-m-d H:i:s', '2013-06-05 20:15:18');
$hours = 8;
for ($i=0; $i<8; $i++){
  $date->add(new DateInterval('PT1H'));
  echo 'TIME2 = '.$date->format('Y-m-d H:i:s').'<br>';
}
于 2013-09-19T10:46:54.980 に答える
0

これを試してみてください

<?php
$i= range(0,23);//it doest work as it creates an array containing a range of elements
$start_time = 9;
$end_time = 2;
$max_value=23;
if($start_time>=$end_time)
{
    for ($i = $start_time ; $i<= $max_value; $i++)
    {
        echo $i;
    }
    for($i=0; $i<=$end_time; $i++)  
    {
    echo $i;    
    }
}
else
{
    for ($i = $start_time ; $i<= $max_value; $i++)
    {
        echo $i;
    }
}

?>
于 2013-09-19T10:33:43.377 に答える
0

これをチェックしてください。お役に立てれば

$start_time = 9;
$end_time = 2;

$flag = 1;
while($flag) [
    echo $start_time . "<br>";        
    $start_time++;
    if ($start_time == 23) { $start_time = 0; }
    if ($start_time == $end_time) {
        $flag = 0;
    }

}

于 2013-09-19T10:39:46.707 に答える