循环结果中的1秒间隔


one second intervals in loop result

我试图(带条件)进行循环,但我不想立即看到结果。我想看到每行间隔一秒显示的结果。

第二个1=行1,第二个2=行2(并且行1仍然可见),第三个3=行3(行1,并且行2仍然存在,依此类推)

首先,PHP脚本应该进行循环(30行作为条件需要$i<=30),然后开始以每行1秒的间隔显示结果。否则,mt_rand()会把结果弄得一团糟。

循环示例:

  for ($i=1; $i<=30; $i++) {
   $roll = mt_rand(1,3);     
    if ($roll=="1") {echo "1 <br />'n";}
elseif ($roll=="2") {echo "2 <br />'n";}
  else {echo "3 <br />'n"; }

我试图找到一些真正简单且功能强大的东西,没有jQuery,没有毫无意义的长代码,而是简单的短脚本。我的JS技术真的很低,所以我想向你们寻求帮助。你能帮我吗?

setTimeOut()的问题是,当执行第一个oneNumber()函数时,循环已经完成,y=31。我认为在调用setTimeOut()函数时会有一种方法来修复变量值,但我还没有找到。这是我发现的唯一途径:

<!DOCTYPE html>
    <body>
    <?php
    for ($i=1; $i<=30; $i++) {
         $roll = mt_rand(1,3);
            if ($roll==1) {echo '<b id="b'.$i.'" style="display: none;"> 1</b>';}
        elseif ($roll==2) {echo '<b id="b'.$i.'" style="display: none;"> 2</b>';}
          else {echo '<b id="b'.$i.'" style="display: none;"> 3</b>';}
                             }
    ?>
    <script>
    window.onload = function () { 
    window.setTimeout(function() {
    document.getElementById('b1').style.display="block";
    },1000)
    window.setTimeout(function() {
    document.getElementById('b2').style.display="block";
    },2000)
    window.setTimeout(function() {
    document.getElementById('b3').style.display="block";
    },3000)
    window.setTimeout(function() {
    document.getElementById('b4').style.display="block";
    },4000)
    window.setTimeout(function() {
    document.getElementById('b5').style.display="block";
    },5000)
    window.setTimeout(function() {
    document.getElementById('b6').style.display="block";
    },6000)
    window.setTimeout(function() {
    document.getElementById('b7').style.display="block";
    },7000)
    window.setTimeout(function() {
    document.getElementById('b8').style.display="block";
    },8000)
    window.setTimeout(function() {
    document.getElementById('b9').style.display="block";
    },9000)
    window.setTimeout(function() {
    document.getElementById('b10').style.display="block";
    },10000)
    window.setTimeout(function() {
    document.getElementById('b11').style.display="block";
    },11000)
    window.setTimeout(function() {
    document.getElementById('b12').style.display="block";
    },12000)
    window.setTimeout(function() {
    document.getElementById('b13').style.display="block";
    },13000)
    window.setTimeout(function() {
    document.getElementById('b14').style.display="block";
    },14000)
    window.setTimeout(function() {
    document.getElementById('b15').style.display="block";
    },15000)
    window.setTimeout(function() {
    document.getElementById('b16').style.display="block";
    },16000)
    window.setTimeout(function() {
    document.getElementById('b17').style.display="block";
    },17000)
    window.setTimeout(function() {
    document.getElementById('b18').style.display="block";
    },18000)
    window.setTimeout(function() {
    document.getElementById('b19').style.display="block";
    },19000)
    window.setTimeout(function() {
    document.getElementById('b20').style.display="block";
    },20000)
    window.setTimeout(function() {
    document.getElementById('b21').style.display="block";
    },21000)
    window.setTimeout(function() {
    document.getElementById('b22').style.display="block";
    },22000)
    window.setTimeout(function() {
    document.getElementById('b23').style.display="block";
    },23000)
    window.setTimeout(function() {
    document.getElementById('b24').style.display="block";
    },24000)
    window.setTimeout(function() {
    document.getElementById('b25').style.display="block";
    },25000)
    window.setTimeout(function() {
    document.getElementById('b26').style.display="block";
    },26000)
    window.setTimeout(function() {
    document.getElementById('b27').style.display="block";
    },27000)
    window.setTimeout(function() {
    document.getElementById('b28').style.display="block";
    },28000)
    window.setTimeout(function() {
    document.getElementById('b29').style.display="block";
    },29000)
    window.setTimeout(function() {
    document.getElementById('b30').style.display="block";
    },30000)
    }   
    </script>
    </body>
    </html>

您在寻找sleep()函数吗?在执行下一条语句之前需要等待秒。也改变了1-2-3的逻辑,条件似乎没有必要。

for ($i=1; $i<=30; $i++) {
   $roll = mt_rand(1,3);
   sleep(1);
   echo $roll." <br />";
}

您可以在每行之后暂停PHP一秒钟,并在每次唤醒时刷新输出缓冲区:

for ($i=1; $i<=30; $i++) {
    $roll = mt_rand(1,3);     
    if ($roll == "1")
        echo "1 <br />'n";
    else if ($roll == "2")
        echo "2 <br />'n";
    else
        echo "3 <br />'n";
    // Flush the output buffer
    ob_flush();
    // Sleep for one second
    sleep(1);
}

调用ob_flush()是必要的,因为PHP缓冲输出,所以简单的睡眠会延迟页面输出,但它仍然会立即出现在浏览器中。

当你这样做时,请注意你的脚本执行时间可能比PHP允许的最大执行时间长。您可以在代码中设置此限制:

set_time_limit(90); // Maximum execution time is 90 seconds
set_time_limit(0);  // No execution time limit

或者在php.ini文件中:

max_execution_time = 90

我会使用setTimeout()函数。https://developer.mozilla.org/en/docs/Web/API/window.setTimeout