2
$zeit = time();
$zeit60 = time()+2;

while ($zeit < $zeit60){
sleep (1);
echo time();
}

なぜこれが機能しないのですか?

回答ありがとうございます!

4

2 に答える 2

1

あなたのコードは毎秒...永遠に時間を出力します。条件は本質的に であるためwhile x < x+2、これはもちろん true です ∀ x ∈ ℝ</p>

$zeit時間の経過後にループが終了するように、おそらく の値を更新する必要があります。

とはいえ、特に複雑なコードを使用していない限り、次のようにするだけで十分な場合があります。

$seconds = 2;
while($seconds) {
    sleep(1);
    echo time();
    $seconds--;
}
于 2013-02-06T20:20:22.390 に答える
1

時間を変数に設定しているため、このループは永久に実行されます。

次のように言うのと同じです。

$a=1;
$b=$a+1;
while($a<$b){}

の値$aは決して変わらないため、永遠に無限に閉じ込められます。一定の「待機時間」( $zeit60) がある場合は、以下を効果的に使用できますtime()

$zeit60 = time()+2;

while (time() < $zeit60){
    sleep (1);
    echo time();
}
于 2013-02-06T20:21:34.717 に答える