2

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

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

我们一直调用包含它的函数,我最近才进去看看它是如何工作的。为什么这行得通,它是否记录在某处?

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

4

3 回答 3

7

它本质上与while(true). 它没有任何初始化,在迭代之间没有任何改变,并且在没有任何东西使它为假的情况下,假设条件为真。

于 2012-09-18T18:08:16.913 回答
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页面,则会卡住并无限期运行

于 2012-09-18T18:10:53.830 回答
1

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

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

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

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

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

于 2012-09-18T18:10:04.167 回答