2010-11-25 27 views
11

He visto este código, y no tengo idea de lo que significa.¿Qué significa while (true) {mean en PHP?

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

Sé lo que es un ciclo while, pero ¿qué significa while (verdadero)? Cuántas veces se ejecutará. ¿No es esto un ciclo infinito?

+0

sí, es un bucle infinito. – Coquevas

Respuesta

9

Sí, este es un ciclo infinito.

La versión explícita sería

while (true == true) 
+8

Excepto por valores muy pequeños de 'true'. –

+0

Sí, verdadero siempre será cierto y no cambiará de estado por lo que su ciclo nunca terminará. – Scoop

+2

@Ignacio te refieres a firmado vs. sin signo 'verdadero'. Esos vienen en PHP 7, me dijeron –

2

De hecho, es un bucle infinito.

14

Aunque es un bucle infinito, puede salir usando break. Es útil cuando se espera que ocurra algo, pero no se sabe exactamente el número de iteraciones que lo llevará hasta allí.

4

Esto es de hecho (como ya se dijo) un bucle infinito y, por lo general, contiene un código que se termina utilizando una instrucción 'break'/'exit'.

Muchos demonios utilizan esta forma de tener un proceso de PHP que continúe trabajando hasta que se modifique alguna situación externa. (Es decir, matar mediante la eliminación de un archivo .pid/envío de un HUP, etc, etc)

1

referes Por favor, para la documentación de PHP actualmente en: http://www.w3schools.com/php/php_looping.asp

El bucle while ejecuta un bloque de código, siempre que el especificado la condición es verdadera.

while (expression) { 
    statement(s) 
} 

La sentencia while evalúa la expresión, que debe devolver un valor booleano. Si la expresión se evalúa como verdadera, la instrucción while ejecuta la declaración (es) en el bloque while. La instrucción while continúa probando la expresión y ejecutando su bloque hasta que la expresión se evalúe como falsa.

Como consecuencia, el código:

while (true) { 
    statement(s) 
} 

ejecutará las declaraciones indefinidamente debido a la "verdadera" es una expresión booleana que, como se puede esperar, es siempre cierto.

Como ya se ha mencionado por @ elzo-valugi, este bucle puede interrumpirse usando un descanso (o de salida):

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

Ops ... arreglado. Gracias –