【问题标题】:What is the "for(;;)" syntax in this code?这段代码中的“for(;;)”语法是什么?
【发布时间】:2011-05-01 04:55:51
【问题描述】:
   for(;;)
   {
     if(!$monitor->Throttle($cause))
       die('Fatal error: '.$monitor->error);

     if($cause == THROTTLE_CAUSE_NONE)
       break;

     sleep(60);
   }

我是初学者 php 开发人员。那么如何阅读前面代码中的“for”语法。有效吗?

我是从http://www.phpclasses.org/blog/post/132-Accelerate-Page-Accesses-Throttling-Background-Tasks-Unusual-Site-Speedup-Techniques-Part-2.html得到的

【问题讨论】:

    标签: php syntax for-loop


    【解决方案1】:

    for循环有四个部分:

    for(initialization; exit condition; step) { body; }
    

    您的循环没有它们,因此如果没有退出条件,它将永远运行,直到遇到“break”语句:

    if($cause == THROTTLE_CAUSE_NONE)
      break;
    

    等价物是:

    while(True) { ... }
    

    【讨论】:

      【解决方案2】:

      呃。

      这是有效的语法,它会创建一个无限循环。但是很丑。

      一个更漂亮的方法是

       while ($cause = $monitor->Throttle($cause) != THROTTLE_CAUSE_NONE)
       {
          if(!$cause)
           die('Fatal error: '.$monitor->error);
      
          sleep(60);   
       }
      

      【讨论】:

        【解决方案3】:

        有效。它创建了一个无限循环,在这种情况下,当/如果 break 语句执行时,它将被打破,即if($cause == THROTTLE_CAUSE_NONE)

        【讨论】:

          【解决方案4】:

          这是一个永远的循环。

          【讨论】:

          • @BoltCLock 我很高兴至少有人认出了它。
          【解决方案5】:

          for(;;) 基本上是一个无限循环,仅此而已:)

          【讨论】:

            【解决方案6】:

            for(;;) 是一个 C 习语,意思是“永远做”,一个无限循环。这个循环只会在die 语句触发(暴力)或原因设置为THROTTLE_CAUSE_NONE(不是那么暴力)时退出。

            这是一个for 循环,没有预先设置、没有条件,也没有后迭代命令,实际上与while true(伪代码)相同。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-07-21
              • 1970-01-01
              • 2022-06-17
              • 2010-12-10
              • 2020-10-24
              • 1970-01-01
              • 2014-01-02
              相关资源
              最近更新 更多