为什么(;;)有效?

时间:2012-09-18 18:06:53

标签: php syntax

我在工作中查看了一些代码,发现了以前没有遇到过的东西:

for (; ;)
{
   // Some code here
   break;
}

我们一直调用包含这个的函数,我最近才进入它,看看它是如何工作的。为什么这有效并且在某处记录?

似乎在这种情况下,while循环更合适......

3 个答案:

答案 0 :(得分:7)

它与while(true)基本相同。它没有任何初始化,在迭代之间不会改变任何东西,并且在没有任何错误的情况下,假设条件为真。

答案 1 :(得分:3)

这是一个无限循环。

通常情况下你会有:

for ($i=0; $i<10; $i=$i+1)

但你可以省略任何部分。

这些都是有效的:

for ($i=0; ; $i=$i+1)
for (; $i<10; $i=$i+1)
for (; $i<10;)

但是,如果省略第二部分,则没有退出循环的条件。如果您不知道要运行循环的次数,可以使用此方法。在这种情况下,您可以使用break指令退出循环

for (;;)
  {
  // some code
  if (some condition)
      break;
  }

请注意,如果您未放置break页面,则会卡住并无限期运行

答案 2 :(得分:1)

第一个空白语句在开头执行。

第二个空白表达式(确定是否退出循环)隐式评估为TRUE:

http://php.net/manual/en/control-structures.for.php

每次迭代后执行第三个空白语句。

因此,任何踢出循环的条件都需要在循环中。