日期:2014-05-17  浏览次数:20609 次

循环语句输出问题
是用for+switch可以输出一段指定的语句,

for ($i=1; $i<=10; $i++)
{
  switch ($i)
{
case 1:
echo "1";
echo "<BR>" ;

  break;  
case 2:
  echo "2";
echo "<BR>" ;
  break;
case 3:
echo "3";
echo "<BR>" ;
break;
case 4:
echo "4";
echo "<BR>" ;
break;
case 5:
echo "5";
echo "<BR>" ;

default:
  echo "OK";
}

例如以上语句可以在i等于某个数时输出某个数字,
但是现在1-5个数字是瞬间输出,请教可以用什么方法让这5个数字隔几秒再输出,比如输出1后隔5秒输出2,再隔5秒输出3
还有个问题,上面的代码只能输出一次,就是说输出1-5个数字后就不输出了,请教有没什么办法可以循环输出1-5个数
就是说,输出完1-5之后,把i变成1,又重新输出一次


------解决方案--------------------
1.加上 sleep(5)

2.switch($i%5)
------解决方案--------------------
如果你给他加个计时器你又发现有作用了.问题不在sleep而在于你没有意识到php是处理完所有代码再输出结果.
如果你要像打字机那样显示,那么请使用js来控制.

探讨

用了sleep函数,
结果还是会一次性输出,并没有输出一个,过5秒,再输出一个的形式
把ajax调用时间改成30秒还是一样的结果,无法一个一个的输出

------解决方案--------------------
延时 5 秒输出,需要
flush();
ob_flush();
sleep(5);

对于 ie 浏览器,还需
echo $i . str_repeat(' ', 256);
即每次输出不能少于 256 字节

达到此效果的充分必要条件是 output_buffering = off