在PHP中,while (true){的意思是什么?

18

我看到了这段代码,但我不知道它是什么意思。

while(true){
    echo "Hello world";
}

我知道什么是while循环,但是while(true)是什么意思?它会被执行多少次?这不是一个无限循环吗?

5个回答

27

虽然这是一个无限循环,但你可以使用break退出它。当等待某件事情发生,却不确定需要多少次迭代时,它非常有用。


13

是的,这是一个无限循环。

显式版本如下:

while (true == true)

2
@Ignacio 你是指有符号和无符号的 true。我听说这些将在 PHP 7 中推出。 - Pekka
9
不够明确。while (((((true == true) == true) == true) == true) == true){ 的意思是“当((((((true == true) == true) == true) == true) == true) == true)时,执行循环”。 - Ignacio Vazquez-Abrams
2
while (true != false),反之为:while ((true != false )==true) - bcosca
5
我不理解为什么 (true == true) 要比 (true) 更加明确。 - Marco Altieri
2
@Pekka,考虑到最终结果是一个布尔表达式,我认为“true”(最可读的布尔表达式)比“true == true”更好。使用相同的方法,如果你需要表达false,你会写什么?false == true? - Marco Altieri
显示剩余15条评论

5

正如之前所述,这确实是一个无限循环,并且通常包含使用“break”/“exit”语句来结束自身的代码。

许多守护程序使用这种方式,使PHP进程继续工作,直到某些外部情况发生变化。(例如通过删除.pid文件/发送HUP等等)


5
请参考当前的PHP文档:http://www.w3schools.com/php/php_looping.asp

当指定条件为真时,while循环会执行一段代码块。

while (expression) {
    statement(s) 
} 

while循环语句会对expression进行求值,该expression必须返回布尔值。如果expression求值为true,则while语句将执行while块中的语句(s)。while语句持续测试表达式并执行其块,直到表达式求值为false。

因此,代码如下:

while (true) {
    statement(s)
}

由于"true"是一个布尔表达式,总是为真,因此将无限执行语句。

如@elzo-valugi所提到的,此循环可使用break (或exit)来终止:

while (true) {
    statement(s)
    if (condition) {
        break;
    }
}

w3schools是一个托管教育内容的第三方网站,而不是PHP文档——官方文档可以在https://www.php.net(https://www.php.net/manual/en/control-structures.while.php)找到。 - TheThirdMan

3

这确实是一个无限循环。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接