• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación & Desarrollo
    • Soporte técnico
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / Cursos / 5. Bucles y repeticiones en PHP

5. Bucles y repeticiones en PHP

El 16 de junio de 2016 por dani.sanchez

Muy frecuentemente en programación vamos a necesitar realizar instrucciones de forma repetitiva.

Vamos a imaginar que tenemos en nuestra base de datos un listado de clientes que necesitamos mostrar en pantalla.

Supongamos que por cada cliente que haya en la base de datos, tenemos que crear en HTML una fila de una tabla e ir asignando cada registro de cliente en sus celdas correspondientes. Sería una labor tediosa.

Gracias a los bucles, con una única instrucción podemos hacer que se lean todos los registros de una base de datos y que para cada registro se monte una fila propia en HTML.

Vamos a comentar los diferentes tipos de bucles con los que contamos en PHP.

Bucle for

El bucle for realiza repeticiones de instrucciones mientras se cumple una determinada condición.

Necesitamos especificarle tres parámetros para que funcione:

  • La inicialización.
  • La condición de la repetición.
  • La actualización que varíe el cumplimiento de la condición.

Con lo que la estructura quedaría:

<?php 
for(inicialización; condición; actualización){
    instrucciones;
}
?>

Vamos a realizar un ejemplo sencillo en el que un número 0 se irá incrementando y mostrándose en pantalla hasta que llegue a 5.

<?php 
for($i=0; $i <= 5; $i++){
    echo “El número vale: “ . $i . “<br/>”;
}
?>

Analicemos detenidamente la línea:

for($i=0; $i <= 5; $i++)

Hemos declarado un bucle for, al que le hemos pasado como parámetros:

Inicialización: una variable llamada $i con el valor 0.

Condición: La condición es que el bucle se va a repetir mientras $i sea inferior o igual a 5.

Actualización: La actualización es que por cada repetición del bucle, $i se va a incrementar en una unidad.

El bloque de instrucciones:

echo “El número vale: “ . $i . “<br/>”;

Por cada repetición del bucle se va a imprimir en pantalla el mensaje: “El número vale: “ y el valor de $i en ese momento.

Con lo que el resultado de este bucle sería:

El número vale: 0
El número vale: 1
El número vale: 2
El número vale: 3
El número vale: 4
El número vale: 5

Haciéndole una traza a este bucle, veríamos que:

  • En el primer paso $i vale 0, al evaluar la condición, $i es inferior a 5, con lo que la condición se cumple, se ejecutan las instrucciones y se incrementa $i en una unidad.
  • En el segundo paso, $i ahora vale 1, al evaluar la condición, $i sigue siendo inferior a 5, con lo que la condición se cumple, se ejecutan las instrucciones y se incrementa $i en una unidad.
  • …
  • En el sexto paso, $i vale 5, al evaluar la condición, $i es inferior o igual a 5, con lo que la condición se cumple, se ejecutan las instrucciones y se incrementa $i en una unidad.
  • En el séptimo paso, $i vale 6, al evaluar la condición, $i NO es inferior o igual a 5, con lo que la condición esta vez NO se cumple, y no se ejecuta ninguna instrucción, dando así por finalizado el bucle.

Vamos con un ejemplo más práctico:

Supongamos que necesitamos crear una tabla HTML con 3 columnas y 300 filas.

Tendríamos que crear 300 etiquetas:

<tr>
<td></td><td></td><td></td>
</tr>

Pero si ejecutamos un bucle for, esta tarea nos llevaría unos pocos segundos:

<table>
<?php 
     for($i=0; $i < 300; $i++){
         echo “<tr><td></td><td></td><td></td></tr>”;
     }
?>
</table>

Si analizamos el código, veremos que primero hemos abierto la etiqueta <table>, ya que esta etiqueta no necesitamos que se repita.

Dentro de la etiqueta <table> hemos iniciado un bucle que se ejecutara mientras la variable $i sea inferior a 300 (contando el 0 como primer valor de $i, al llegar a 299, tendríamos las 300 repeticiones),

Y el código a repetir no es más que una fila con tres columnas.

Para finalizar, salimos del código PHP y cerramos la tabla.

Podemos hacernos una idea de las posibilidades que nos aporta el uso de bucles, y del ahorro de trabajo que nos puede suponer si sabemos cuándo implementarlos.

Bucle while

El bucle while ejecuta repeticiones de instrucciones un número indeterminado de veces. Incluso es posible que no llegue a realizarse ninguna repetición, ya que lo primero que se hace es evaluar la condición para arrancar el bucle, y si esta es falsa, el bucle no se inicia.

La estructura de este bucle es:

<?php 
while(condicion){
     Instrucciones;
}
?>

Mientras (condición sea verdadera) Repite
Instrucciones;
Fin de repetición

Este es el bucle más utilizado para mostrar registros procedentes de una base de datos, ya que mientras haya registros que mostrar, irán apareciendo en pantalla. Cuando no haya ningún registro que mostrar, finalizará el bucle. Lo veremos con detenimiento en el apartado de Bases de datos.

Siguiendo con el ejemplo del contador numérico que usamos para el bucle for, en while se ejecutaría de la siguiente forma:

<?php 
$i=0;
while($i <= 5){
     echo “El valor del número es “ . $i . “<br/>”;
     $i++;
}
?>

Vamos a analizar este bucle haciéndole una traza:

  1. Declaramos una variable $i inicializada a 0.
  2. Abrimos el bucle while con la condición de que $i debe ser inferior o igual a 5.
  3. La condición se cumple y ejecuta las instrucciones de mostrar en pantalla el texto “El valor del número es…”).
  4. La siguiente instrucción es incrementar $i en una unidad, con lo que al finalizar la repetición, ahora $i vale 1.
  5. Se vuelve a evaluar la condición. En el segundo paso $i vale 1, con lo cual la condición se cumple y se vuelve a ejecutar el bloque de instrucciones.
  6. Así sucesivamente, hasta que $i vale 6, de forma que la condición ya no se cumple, y el bucle finaliza.

Antes mencionamos que es posible que un bucle while no llegue a ejecutarse nunca, por ejemplo si tenemos:

<?php 
$i=8;
while($i <= 5){
     echo “El valor del número es “ . $i . “<br/>”;
     $i++;
}
?>

De entrada $i vale 8, al evaluar la condición, esta devuelve “falso”, y el bucle no se ejecuta ninguna vez.

Bucle do… while

El bucle do…while es muy similar al bucle while, con la diferencia de que do…while sí se ejecuta al menos una vez, ya que primero se ejecuta el bloque de instrucciones y al finalizar se evalúa la condición.

Su estructura es:

<?php 
do{
     instrucciones;
}while(condición);
?>

La traducción literal sería:

Haz
instrucciones;
Mientras que (condición sea verdadera);

El ejemplo de los números usado en los anteriores bucles, quedaría así:

<?php 
$i=0;
do{
     echo “El valor del número es “ . $i . “<br/>”;
     $i++;
}while($i <= 5);
?>

Vamos a analizar el bucle haciéndole una traza:

  1. Declaramos una variable $i inicializada a 0.
  2. Abrimos el bucle do…while
  3. Se ejecuta la primera repetición, ya que todavía no ha llegado a ninguna condición.
  4. Ejecutamos el bloque de instrucciones e incrementamos $i en una unidad.
  5. Ahora se evalúa la condición. Como $i ahora vale 1, la condición se cumple y se vuelve a ejecutar el bloque de instrucciones.
  6. Así sucesivamente, hasta que $i vale 6, de forma que la condición ya no se cumple, y el bucle finaliza.

Bucles infinitos

Un error muy común en programación es crear bucles infinitos, es decir, bucles que no encuentran una condición para finalizar, por lo que debemos ser cuidadosos en este sentido.

Uno de los bucles más propenso a generar repeticiones infinitas es precisamente el bucle do…while. Ya que siempre se ejecuta una primera vez, y si luego no encuentra una condición de finalización, se ejecutará infinitamente hasta que cerremos el navegador web.

Volvamos al ejemplo del contador numérico para ver un ejemplo de bucle infinito:

<?php 
$i=0;
do{
     echo “El valor del número es “ . $i . “<br/>”;
}while($i <= 5);
?>

Hemos suprimido la instrucción $i++;

En este caso, el bucle tendería al infinito, ya que no hay ninguna instrucción que altere a $i para entrar en la condición de finalización.

Si le hacemos una traza:

  1. En el primer paso del bucle, $i vale 0.
  2. Ejecuta el bloque de instrucciones.
  3. Al evaluar la condición, esta es verdadera, con lo que vuelve a repetirse el bucle.
  4. En el segundo paso, $i sigue valiendo 0.
  5. Ejecuta el bloque de instrucciones.
  6. Al evaluar la condición, sigue siendo verdadera, con lo que el bucle se repite una y otra vez, hasta el infinito.

Es posible que incluso se cuelgue el navegador web.

Así que debemos poner atención en la ejecución de los bucles, y asegurarnos de que este siempre va a encontrar una condición de parada.

Bucle foreach

Este bucle se usa principalmente para recorrer matrices o arrays, por lo que lo veremos en la unidad de Matrices o Arrays.

https://danisanchez.net/curso-de-php/6-matrices-o-arrays-tablas-en-php/

Publicado en: Cursos, Iniciación a PHP

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»
  • Portátiles reacondicionados, ¿mejor que uno nuevo?

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Iniciar sesión en nuestros VPS mediante SSH Keys
  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»

Comentarios recientes

  1. Brandon Portes en Taller de verano de WooCommerce #1
  2. Sebastian en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  3. Rigol en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora
  4. dani.sanchez en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  5. rikylinux en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress
Medium banner says Support Inkscape
Banner pie de página

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Alojado con energía 100% verde

Dani Sánchez © 2025 · Política de privacidad · Política de cookies