Php al igual que otros lenguajes de programación tiene herramientas como los bucles para usos como recorrer arrays, printar variables o cualquier tipo de acción que se te ocurra.
Has llegado a un punto en el que necesitas recurrir a bucle para obtener los valores de un array o bien no recuerdas algún tipo de bucle en php y has caído aquí para recordarlo.
Pues hoy te voy a mostrar varias variantes de bucles en php y sus usos.
El bucle while en PHP
El bucle while se utiliza para recorrer un array o realizar acciones cuando no sabemos realmente el final de este. Por ejemplo, tenemos un array del que no sabemos su longitud y usaremos el bucle while para acceder a sus posiciones.
Necesitamos printar 5 números pares que contiene el array, pero no sabemos las posiciones ni su longitud (aunque en este caso siempre podríamos usar count(array) para conocer su límite, pero lo vamos a omitir para el ejemplo).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//Definición de variables $array = [5,2,9,10,3,4,6,8,13,25,50,22];//valores del array $final = true;//valor inicial true para entrar en el bucle y seguir recorriendo $i=0;//posición inicial 0 $numeros_pares= 0;//números pares imprimidos 0 while($final){ if($array[$i]%2==0){//Si el valor del array el par echo $array[$i];//imprimir posición $numeros_pares++;//acumulamos valores printados } if($numeros_pares==5){//Si ya hemos printado 5 numeros $final= false;//marcamos final de bucle } $i++; } |
En este pequeño bucle la función de la variable “$final” es marcar el límite de nuestro bucle. Cuando hemos imprimido 5 números y este dato lo conocemos porqué hemos puesto una condicional que controla el valor de la variable “$numeros_pares”, damos valor “false” a la variable “$final” para salir del bucle.
La variable “$numeros_pares” incrementa con el signo “++” cada vez que se detecte un valor par en la posición del array recorrida.
El array lo recorremos por cada vuelta gracias al a instrucción “$i++” que incrementa en 1 el valor de la variable y nos permite acceder a la siguiente posición.
Sabemos que el valor de la posición array es un número par usando la instrucción “$array[$i]%2==0” que realiza una comparación que traducida al castellano sería “si dividimos el valor entre 2 y el resultado es 0” coincidiendo con el comportamiento de un número par.
Bucle Do while
Los bucles do while lo utilizamos de la misma manera que el bucle while con la diferencia que, el bucle do while se ejecutará almenos una vez, ya que primero realizamos la acción y posteriormente controlamos el final de bucle.
Vamos a realizar un bucle en el que queremos imprimir el primer valor del array, y solo se detendrá cuando encontremos un valor impar.
Si encontráramos que el primer valor es impar, el código imprimiría la primera posición pero se detendría, como en el ejemplo que te muestro.
1 2 3 4 5 6 7 8 9 10 11 |
//Definición de variables $array = [5,2,9,10,3,4,6,8,13,25,50,22];//valores del array $final = true;//valor inicial true para entrar en el bucle y seguir recorriendo $i=-1;//posición inicial -1 do{ $i++//incrementar variable $i a 0 echo $array[$i];//printar primera posición }while($array[$i]%2==0)//comprobar si el valor es par |
En este ejemplo se imprimiría el primer valor, posteriormente se comprobaría si el valor imprimido es par. Cómo en el array disponemos del primer valor impar, el do while se detendría por no cumplir la condición.
Al entrar en el “do”, la variable “$i” vale -1. La primera instrucción incrementa en 1. Por tanto tendría un valor “0” inicialmente. La siguiente instrucción imprime la posición 0 del array ($array[0]) que coincide con el valor 5.
Llegados a la comprobación del bucle tenemos el primer valor es 5 y el condicional comprueba si es número par ($array[$i]%2==0), como no se cumple, finalizaría con una impresión.
El bucle for
Lo utilizamos cuando queremos recorrer un array o realizar operaciones conociendo el final de este. Vamos a acumular en una variable de tipo string todos los valores de un array.
1 2 3 4 5 6 7 8 9 |
$array = [5,2,9,10,3,4,6,8,13,25,50,22];//valores del array $variable_text = ''; for($i=0;$i<count($array);$i++){ $variable_text.= $array[$i]; } print_r($variable_text); |
La condición del for controla el final del recorrido del bucle desde la posición 0 del array hasta la posición final con “count()”, que devuelve la cantidad de posiciones y por cada vuelta incrementa en uno el valor de “$i” con ($i++).
La parte final del condicional puede ser diferente de ($i++). Podemos recorrer el array de dos en dos o de tres en tres ($i+=2). También podemos realizar el bucle empezando el array por el final yacabando en el principio. El valor de $i inicial en la última posición del array ($i= (count($array))-1) y recorriendolo restando posiciones ($i–).
Por cada vuelta concatenamos en una variable tipo string la el valor de la posición actual del array ($variable_text.= $array[$i]), una vez llegados a la última posición, el bucle se detendría y se imprimiría la variable $variable_text.
Bucle foreach
foreach es un bucle utilizado para arrays asociativos y nos ayudan a recorrerlo usando la clave valor. Si disponemos de un array asociativo como este, recorreríamos el array usando foreach imprimiendo el contenido. $array[“uno” => 1, “dos” => 2, “tres” => 3, “cuatro” => 4];
1 2 3 4 5 |
foreach($array as $clave => $valor){ echo 'La clave' . $clave . ' contiene el valor: ' . $valor; } |
Este ejemplo recorre el array asociativo y por cada posición tenemos a disposición la variable $clave y $valor. Estas variables hacen referencia a la clave y valor del array.
Por tanto la impresión de la primera posición sería:
echo ‘La clave’ . “uno” . ‘ contiene el valor: ‘ . 1;
Break
La instrucción break no es un bucle sinó una utilidad dentro de un bucle. Lo usamos para romper o parar un bucle en lugar de utilizar variables y condicionales para ese fin.
Retomando el ejemplo anterior del bucle while podríamos sustituir las siguientes instrucciones únicamente usando la instrucción break.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$array = [5,2,9,10,3,4,6,8,13,25,50,22];//valores del array //$final = true;//Ya no necesitamos la variable $final $i=0;//posición inicial 0 $numeros_pares= 0;//números pares imprimidos 0 while(isset($array[$i])){//Comprobamos que la posición del array existe (prevención de errores) if($array[$i]%2==0){//Si el valor del array el par echo $array[$i];//Imprimir posición $numeros_pares++;//Acumulamos valores printados } if($numeros_pares==5){//Si ya hemos printado 5 numeros //$final= false;//antigua instrucción break; //final de array } $i++; } |
Puede que también te interese calcular la edad en php usando la fecha de nacimiento.
De esta manera no necesitamos setear ni estar pendientes de una variable únicamente. Usamos la instrucción break para salir de el.
¿Te ha servido de utilidad el post sobre los bucles en php?. Déjanos en la caja comentarios tu opinión sobre el post. También puedes hacerlo si conoces algún ejemplo adicional sobres los bucles en php.
Deja tu comentario