Los bucles permiten repetir código una y otra vez sin escribirlo múltiples veces. Imagina que quieres mostrar 100 productos en una tienda online. ¿Escribirías 100 líneas de código? No. Usarías un bucle.
Repite un bloque de código un número específico de veces.
<?php
// Sintaxis: for (inicio; condición; incremento)
for ($i = 0; $i < 5; $i++) {
echo "Número: " . $i . "<br>";
}
// Resultado:
// Número: 0
// Número: 1
// Número: 2
// Número: 3
// Número: 4
?>
Partes del bucle for:
$i = 0 → Donde comienza el contador.$i < 5 → Mientras esto sea verdadero, continúa.$i++ → Aumenta el contador en cada iteración.// Contar hacia atrás
for ($i = 5; $i > 0; $i--) {
echo $i . "<br>";
}
// Incrementar de 2 en 2
for ($i = 0; $i <= 10; $i += 2) {
echo $i . " ";
}
// Resultado: 0 2 4 6 8 10
Repite mientras una condición sea verdadera. Útil cuando no sabes cuántas iteraciones necesitas.
<?php
$contador = 0;
while ($contador < 5) {
echo "Contador: " . $contador . "<br>";
$contador++;
}
// Ejemplo práctico: Leer datos hasta encontrar uno específico
$numero = 0;
while ($numero != 10) {
$numero = rand(1, 20); // Número aleatorio
echo "Número: " . $numero . "<br>";
}
?>
⚠️ ¡Cuidado! Si la condición nunca se vuelve falsa, el bucle se ejecutará infinitamente. Siempre asegúrate de que algo cambie dentro del bucle.
Similar a while, pero ejecuta el código al menos una vez antes de verificar la condición.
<?php
$contador = 0;
do {
echo "Contador: " . $contador . "<br>";
$contador++;
} while ($contador < 5);
// Diferencia con while:
// do...while: Se ejecuta al menos una vez
// while: Podría no ejecutarse nunca
// Ejemplo:
do {
echo "Esto se imprime";
} while (false); // Se imprime una vez
?>
La forma más fácil de recorrer arrays. Funciona con arrays indexados y asociativos.
<?php
// Con array indexado
$frutas = ["Manzana", "Banana", "Naranja"];
foreach ($frutas as $fruta) {
echo $fruta . "<br>";
}
// Con índice y valor
foreach ($frutas as $indice => $fruta) {
echo $indice . ": " . $fruta . "<br>";
}
// Con array asociativo
$persona = [
"nombre" => "Juan",
"edad" => 25,
"ciudad" => "Madrid"
];
foreach ($persona as $clave => $valor) {
echo $clave . ": " . $valor . "<br>";
}
?>
Controla el flujo dentro de los bucles.
<?php
// break: Salir del bucle completamente
for ($i = 0; $i < 10; $i++) {
if ($i == 5) {
break; // Sale del bucle
}
echo $i . "<br>";
}
// Imprime: 0 1 2 3 4
// continue: Salta a la siguiente iteración
for ($i = 0; $i < 5; $i++) {
if ($i == 2) {
continue; // Salta esta iteración
}
echo $i . "<br>";
}
// Imprime: 0 1 3 4 (se salta el 2)
?>
Un bucle dentro de otro bucle. Útil para tablas o matrices.
<?php
// Crear una tabla de multiplicar
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
echo $i . " x " . $j . " = " . ($i * $j) . "<br>";
}
echo "---<br>";
}
?>
Usa bucles para generar HTML dinámicamente.
<?php
$productos = [
["nombre" => "Laptop", "precio" => 999.99],
["nombre" => "Mouse", "precio" => 29.99],
["nombre" => "Teclado", "precio" => 79.99]
];
?>
<table border="1">
<tr>
<th>Producto</th>
<th>Precio</th>
</tr>
<?php
foreach ($productos as $producto) {
echo "<tr>";
echo "<td>" . $producto["nombre"] . "</td>";
echo "<td>$" . $producto["precio"] . "</td>";
echo "</tr>";
}
?>
</table>
¿Cuál usar en cada situación?
Cuando sabes exactamente cuántas veces repetir.
for ($i = 0; $i < 10; $i++) { }
Cuando depende de una condición que puede cambiar.
while ($condicion) { }
Cuando necesitas ejecutar al menos una vez.
do { } while ($condicion);
Cuando recorres un array (RECOMENDADO para arrays).
foreach ($array as $valor) { }
Crea un archivo bucles.php con un servidor local:
for para imprimir los números del 1 al 10.for para imprimir los números del 10 al 1 (hacia atrás).for para imprimir solo los números pares del 1 al 20.foreach.while que cuente desde 1 hasta 5.for que se detenga cuando encuentre el número 7.for que salte el número 5 (usa continue).