Control del flujo en PHP: Bucles II

Estructura y funcionamiento de los bucles for y foreach. Explicamos como salir de un bucle: Break y continue
Este es el segundo artículo sobre los bucles en PHP que publicamos en el Manual de PHP. El anterior artículo explicó acerca de los bucles while y do-while. Así pues, ahora vamos a dedicarnos a los otros tipos de bucles, que son el bucle for, para iterar un número dado de veces, foreach, útil para recorrer arrays, así como las sentencias break y continue.

Bucle for

PHP está provisto de otros tipos de bucle que también resultan muy prácticos en determinadas situaciones. El más popular de ellos es el bucle for que, como para los casos anteriores, se encarga de ejecutar las instrucciones entre llaves. La diferencia con los anteriores radica en cómo se plantea la condición de finalización del bucle. Para aclarar su funcionamiento vamos a expresar el ejemplo de bucle while visto en el capítulo anterior en forma de bucle for:

<?
For ($size=1;$size<=6;$size++)
{
   echo"<font size=$size>Tamaño $size</font><br>n";
}
?>

Ejecutar script

Las expresiones dentro del paréntesis definen respectivamente:

-Inicialización de la variable. Valida para la primera vuelta del bucle.

-Condición de evaluación a cada vuelta. Si es cierta, el bucle continua.

-Acción a realizar al final de cada vuelta de bucle.

Bucle foreach

Este bucle, implementado en las versiones de PHP4, nos ayuda a recorrer los valores de un array lo cual puede resultar muy útil por ejemplo para efectuar una lectura rápida del mismo. Recordamos que un array es una variable que guarda un conjunto de elementos (valores) catalogados por claves.

La estructura general es la siguiente:

Foreach ($array as $clave=>$valor)
{
   instruccion1;
   instruccion2;
   …;
}

Un ejemplo práctico es la lectura de un array lo cual podría hacerse del siguiente modo:

<?
$moneda=array("España"=> "Peseta","Francia" => "Franco","USA" => "Dolar");
Foreach ($moneda as $clave=>$valor)
{
   echo "Pais: $clave Moneda: $valor<br>";
}
?>

Ejecutar script

Este script se encargaría de mostrarnos por pantalla el contenido del array $moneda. No resultaría mala idea crear una función propia basada en este bucle que nos permitiese visualizar arrays monodimensionales y almacenarla en nuestra librería. Esta función podría ser definida de esta forma:

Function mostrar_array ($array)
{
Foreach ($array as $clave=>$valor)
{echo "$clave=>$valor<br>";}
}

Break y continue

Estas dos instrucciones se introducen dentro de la estructura y nos sirven respectivamente para escapar del bucle o saltar a la iteración siguiente. Pueden resultarnos muy prácticas en algunas situaciones.

Durante una iteración de un bucle podemos saltar directamente a la siguiente iteración, sin seguir con la actual, con la instrucción continue.

También podemos detener completamente las repeticiones de cualquier bucle con break, lo que parará la ejecución de la iteración actual y de las siguientes que pudiera haber.

Referencia: Si deseas ver la construcción de un bucle for y otros tipos de bucles, en vídeo te recomendamos el siguiente videotutorial Estructuras de control, Vídeo 2: bucles for, while y do-while.

Además, si deseas aprender la estructura de control switch y las instrucciones break y continue, así como ver otro ejemplo de foreach, te recomendamos ver los Videotutoriales de estructuras de control en PHP II.

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Compartir

Comentarios

AnimAlf

13/8/2003
Si se trata de un array multidimensional se podría modificar la función del siguiente modo ...

function mostrar_array ($array)
{
   Foreach ($array as $clave=>$valor)
   {
     echo "$clave => $valor
";
     if (is_array($valor)) mostrar_array($valor);
   }
}

Andrés

10/6/2005
No funciona correctamente el ejemplo de moneda/pais, el resultado que me da en pantalla despues de copiar y pegar es este:
"Peseta","Francia" => "Franco","USA" => "Dolar"); Foreach ($moneda as $clave=>$valor) { echo "Pais:" $clave Moneda: $valor"; } ?>

pepe

07/4/2006
mu weno <script>alert("Ummm!");</script>
el comentario de arrays multidimensionales.

HéAoPéz

21/5/2006
Guillermo Chirino


La parte que dice "is_array($valor)" muestra si $valor es array en caso de serlo vuelve a aplicar el metodo mostrar_array de manera recursiva.

Osea que si el array es una matriz despliega todos lo valores.

Espero me entiendas

jonas

01/2/2007
Hola, sobre el item "incremento" en la sentencia.
En ASP es claro a traves de la cláusula STEP.

Generalmente usamos en php el incremento en 1, es decir "++".

He estado en una situación en que el incremento en php debía ser un numero de dos digitos, digamos 64, entonces...la pregunta es, cómo se programan los incrementos....

muchas gracias, y como siempre, felicitaciones.

Makito

03/5/2007
Asi de simple, el ++ i el -- es para incremento i de cr emento de "una unidad" , si deseas mas solo debes usar otros operadores... aki el ejemplo...

- - - - - -
For ($size=1;$size<=15;$size+=3)
// Aki cambie el valor de condicion a 15, para ser mas largo... luego use el operador += y un valor x cualkiera...
{
echo"<font size=$size>Tamaño $size</font><br> ";
}
- - - - - -

esto imprimira...

- - - - - -
Tamaño 1
Tamaño 4
Tamaño 7
Tamaño 10
Tamaño 13
- - - - - -

NIgdel

05/11/2007
El modo de implementar los incrementos en valores distintos podia ser simplemente:
$var+=$incremento;

Eli

13/7/2009
mostrar_array
...en la funcion mostrar_array, no entendi si esa es una funcion predeterminada de php, o si tu creaste la funcion, porque si tu la creaste, creo que todo el array se mostraria incluso antes de evaluar la condicion if... o sino talves no la entendi bien... XD saludos...