Está en la página 1de 4

FOR

Los ciclos for son los ms complejos en PHP. Se comportan como sus homlogos en C. La sintaxis de un ciclo for es:
for (expr1; expr2; expr3) sentencia

La primera expresin (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del ciclo. En el comienzo de cada iteracin, se evala expr2. Si se evala como TRUE, el ciclo contina y se ejecutan la/sy sentencia/s anidada/s. Si se evala como FALSE, finaliza la ejecucin del ciclo. Al final de cada iteracin, se evala (ejecuta) expr3. Cada una de las expresiones puede estar vaca o contener mltiples expresiones separadas por comas. En expr2, todas las expresiones separadas por una coma son evaluadas, pero el resultado se toma de la ltima parte. Que expr2 est vaca significa que el ciclo debera ser corrido indefinidamente (PHP implcitamente lo considera como TRUE, como en C). Esto puede no ser tan intil como se pudiera pensar, ya que muchas veces se debe terminar el ciclo usando una sentencia condicional break en lugar de utilizar la expresin verdadera del for. Considere los siguientes ejemplos. Todos ellos muestran los nmeros del 1 al 10:
<?php /* ejemplo 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; } /* ejemplo 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* ejemplo 3 */ $i = 1; for (; ; ) { if ($i > 10) { break; }

echo $i; $i++; } /* ejemplo 4 */ for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); ?>

Por supuesto, el primer ejemplo parece ser el mejor (o quizs el cuarto), pero se puede observar que la posibilidad de usar expresiones vacas en los ciclos for resulta til en muchas ocasiones. PHP tambin admite la sintaxis alternativa de los dos puntos para ciclos for.
for (expr1; expr2; expr3): sentencia ... endfor;

WHILE
Los ciclos while son el tipo ms sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La forma bsica de una sentencia while es:
while (expr) sentencia

El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como la expresin while se evale como TRUE. El valor de la expresin es verificado cada vez al inicio del bucle, por lo que incluso si este valor cambia durante la ejecucin de las sentencias anidadas, la ejecucin no se detendr hasta el final de la iteracin (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una iteracin). A veces, si la expresin while se evala como FALSE desde el principio, las sentencias anidadas no se ejecutarn ni siquiera una vez. Al igual que con la sentencia if, se pueden agrupar varias instrucciones dentro del mismo bucle while rodeando un grupo de sentencias con corchetes, o utilizando la sintaxis alternativa:
while (expr): sentencias ...

endwhile;

Los siguientes ejemplos son idnticos y ambos presentan los nmeros del 1 al 10:
<?php /* ejemplo 1 */ $i = 1; while ($i <= 10) { echo $i++; /* el valor presentado sera $i antes del incremento (post-incremento) */ } /* ejemplo 2 */ $i = 1; while ($i <= 10): echo $i; $i++; endwhile; ?>

DO-WHILE
Los ciclos do-while son muy similares a los ciclos while, excepto que la expresin verdadera es verificada al final de cada iteracin en lugar que al principio. La diferencia principal con los ciclos while es que est garantizado que corra la primera iteracin de un ciclo do-while (la expresin verdadera slo es verificada al final de la iteracin), mientras que no necesariamente va a correr con un ciclo while regular (la expresin verdadera es verificada al principio de cada iteracin, si se evala como FALSE justo desde el comienzo, la ejecucin del ciclo terminara inmediatamente). Hay una sola sintaxis para ciclos do-while:
<?php $i = 0; do { echo $i; } while ($i > 0); ?>

El ciclo de arriba se ejecutara exactamente una sola vez, ya que despus de la primera iteracin, cuando la expresin verdadera es verificada, se evala comoFALSE ($i no es mayor que 0) y termina la ejecucin del ciclo.

Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del ciclo do-while, para permitir parar la ejecucin en medio de los bloques de cdigo, mediante el encapsulado con do-while (0), y utilizando la sentencia break. El siguiente fragmento de cdigo demuestra esto:
<?php do { if ($i < 5) { echo "i no es lo suficientemente grande"; break; } $i *= $factor; if ($i < $minimum_limit) { break; } echo "i est bien"; /* procesar i */ } while (0); ?>