虽然(真){在PHP中意味着什么?

ste*_*nmc 15 php

我见过这段代码,我不知道这意味着什么.

while(true){
    echo "Hello world";
}
Run Code Online (Sandbox Code Playgroud)

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

Elz*_*ugi 19

虽然是无限循环,但您可以使用break退出它.它在等待某些事情发生时非常有用,但是您并不确切知道可以使您获得的迭代次数.


Pek*_*ica 11

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

显式版本将是

while (true == true)
Run Code Online (Sandbox Code Playgroud)

  • 不够明确.`while(((((true == true)== true)== true)== true)== true){` (7认同)
  • 我不明白为什么(true == true)应该比(true)更明确 (3认同)
  • @Ignacio你的意思是签名与未签名的`true`.我被告知,这些都是PHP 7 (2认同)
  • 反之:`while (true != false)` 返回:`while ((true != false )==true)` (2认同)
  • @Pekka,鉴于最后结果是一个布尔表达式,在我看来,表达式"true"(可能的最可读的布尔表达式)优于"true == true".使用相同的方法,如果你需要表达式false,你会写什么?false ==是吗? (2认同)

Gek*_*kie 5

这确实(如前所述)是一个无限循环,通常包含通过使用'break'/'exit'语句结束自身的代码.

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


Mar*_*eri 5

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

只要指定的条件为真,while 循环就会执行一段代码。

while (expression) {
    statement(s) 
} 
Run Code Online (Sandbox Code Playgroud)

while 语句计算表达式,该表达式必须返回布尔值。如果表达式的计算结果为 true,则 while 语句将执行 while 块中的语句。while 语句继续测试表达式并执行其块,直到表达式计算结果为 false。

结果,代码:

while (true) {
    statement(s)
}
Run Code Online (Sandbox Code Playgroud)

将无限期地执行语句,因为“true”是一个布尔表达式,正如您所期望的那样,它始终为 true。

正如 @elzo-valugi 已经提到的,可以使用中断(或退出)来中断此循环:

while (true) {
    statement(s)
    if (condition) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)