jueves, 29 de enero de 2009

Manual de PHP 32. Bucles: For

El bucle for

Se trata de una nueva forma –de uso bastante habitual– que permite establecer un bucle que se repetirá mientras una variable numérica se mantenga dentro de intervalo -establecido en la sintaxis del propio bucle– indicándose, también en la propia instrucción, el criterio de modificación de esa variable en cada ejecución del bucle.

La sintaxis es la siguiente:

for ( desde ; hasta ; incre ){
.........
...instrucciones....
.........
}

El parámetro desde permite asignar un valor inicial a una variable ($var=num) que hará funciones de controladora de iteraciones.

El parámetro hasta establece la condición que limita el valor máximo que puede alcanzar la variable de control.

El parámetro incre (con una sintaxis del tipo $variable++; $variable--; ++$variable --$variable; $variable +=n o $variable -=n establece los incrementos o decrementos de la variable controladora en cada iteración del bucle.

Las intrucciones contenidas entre { } serán ejecutadas cada vez que se reitere el bucle.

Variantes del bucle for

El bucle for permite algunas variantes respecto a su forma más general. Son estas:

for ( desde ; ; incre ){
.........
...instrucciones....
.........
}

En este caso se omite el valor del parámetro hasta (observa que no se omite el separador de parámetros (;) con lo que en realidad se está asignando a hasta el valor NUL.

Cuando se utiliza esta sintaxis, el bucle se repetiría de forma indefinida (la variable podría tomar cero como valor, pero, cero es distinto de NUL) salvo que -tal como puedes ver en el ejemplo- se escriba en las instrucciones un operador condicional con una opción de ruptura del bucle -el famoso break que ya hemos visto al estudiar la instrucción while y otras anteriores–.

for ( ; ; ){
.........
...instrucciones....
.........
}
En este caso no se inserta ningún parámetro pero si se escriben los ; delimitadores de los mismos.

Si observas el ejemplo verás que el control se realiza fuera del for. El valor de la variable contador se asigna fuera del bucle, los incrementos de esa variable están escritos en las líneas de instrucciones y llevan un operador condicional con la función break para permitir la salida.

for( desd ; hast ; inst, incr )

Esta nueva variante de for permite insertar instrucciones a través del tercer parámetro de la función.

Si insertamos como tercer parámetro una conjunto de instrucciones, separadas por comas, se ejecutarán de igual forma que si estuvieran contenidas entre { y }

En este caso, el modificador de la variable de control (incr) se incluye como una instrucción más –separada por una coma– de las contenidas en ese tercer parámetro de la función.

for ( desde ; hasta ; incre ):
.........
...instrucciones....
.........
endfor;

Esta sintaxis es alternativa a la primera de las descritas. Sustituye la { por dos puntos (:) y la } por endfor.




<?
for ($i = 1; $i <= 10; $i++) {
print $i."<br>";
}
?>

<?
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}

print $i."<br>";
}
?>



<?
$i = 1;
for (;;) {
if ($i > 10) {
break;
}

print $i."<br>";
$i++;
}
?>
<?
for ($i = 1; $i <= 10; print $i."<br>", $i++) ;
?>

<?
for($i = 1; $i <=10;$i++):
echo $i,"<br>";
endfor;
?>

ejemplo49.php

<? for ($i = 1; $i <= 10;$i++):?>
<H1>Esto se repetirá 10 veces</H1>
<? endfor; ?>

Como puedes observar en este último ejemplo también es aplicable aquí la sintaxis de los dos sripts PHP. El primero contiene las instrucciones del bucle y el segundo señala el final del mismo.

Entre ambos scripts se escribe el código HTML



A la hora de programar bucles hay que evitar el riesgo de convertirlo en un bucle indefinido.

Cuando esto ocurre –el error es humano– al abrir la página que lo contiene parecerá que nuestro navegador se ha quedado colgado aunque en realidad estará esperando a que sea atendida la petición.

Si llega a planteársete ese problema, tendrás que recurrir a la socorrida solución de pulsar ALT+CTRL+DEL para abortar la petición del navegador.






No hay comentarios: