El for se usa cuando sabes cuántas veces se tiene que repetir algo: del 1 al 10, los años desde 1960 hasta hoy, las 12 filas de una tabla. Es igual al de C.

Las tres partes

Anatomía de un for

 for ($i = 1; $i <= 5; $i++) {
      ---+--  ---+---  --+-
         |       |       `- avance: se ejecuta al FINAL de cada vuelta
         |       `--------- condición: se revisa ANTES de cada vuelta
         `----------------- inicio: se ejecuta UNA vez, al comenzar
     echo $i;   <- el cuerpo: lo que se repite
 }

El recorrido de un for

flowchart TD
    A["Inicio<br/>$i = 1"] --> B{"Condición<br/>¿$i ≤ 5?"}
    B -->|sí| C["Cuerpo<br/>echo $i"]
    C --> D["Avance<br/>$i++"]
    D --> B
    B -->|no| E["Sigue el programa"]
<?php
for ($i = 1; $i <= 5; $i++) {
    echo "Vuelta $i\n";
}
echo "Terminó\n";
Vuelta 1
Vuelta 2
Vuelta 3
Vuelta 4
Vuelta 5
Terminó
Vuelta$i al entrar¿$i <= 5?Imprime$i después del avance
11síVuelta 12
22síVuelta 23
……………
55síVuelta 56
—6nosale del ciclo

Por qué se llama $i

Es una convención heredada de las matemáticas (índice). Para un ciclo corto, $i está bien. Si el número significa algo, ponle ese nombre: $anio, $fila.

Contar de otras formas

<?php
// Hacia atrás
for ($i = 5; $i >= 1; $i--) {
    echo $i . " ";
}
echo "\n";
 
// De dos en dos
for ($i = 0; $i <= 10; $i += 2) {
    echo $i . " ";
}
echo "\n";
 
// Años, desde el actual hacia atrás
for ($anio = 2026; $anio >= 2020; $anio--) {
    echo $anio . " ";
}
echo "\n";
5 4 3 2 1 
0 2 4 6 8 10 
2026 2025 2024 2023 2022 2021 2020 

Incorrecto: la condición nunca se cumple

<?php
for ($i = 10; $i <= 1; $i--) {
    echo $i;
}

No imprime nada. $i parte en 10, y 10 <= 1 es falso desde la primera revisión: el cuerpo no se ejecuta ni una vez.

Correcto: si cuentas hacia atrás, la condición mira hacia abajo

<?php
for ($i = 10; $i >= 1; $i--) {
    echo $i . " ";
}
10 9 8 7 6 5 4 3 2 1 

Acumular

Un uso muy común es ir sumando o juntando algo en cada vuelta. La variable acumuladora se crea antes del ciclo.

<?php
$suma = 0;
 
for ($i = 1; $i <= 100; $i++) {
    $suma += $i;
}
 
echo "La suma del 1 al 100 es $suma\n";
La suma del 1 al 100 es 5050

Incorrecto: crear el acumulador dentro del ciclo

<?php
for ($i = 1; $i <= 100; $i++) {
    $suma = 0;
    $suma += $i;
}
echo $suma;
100

En cada vuelta $suma vuelve a 0, así que al final solo tiene el último número.

La tabla de multiplicar

<?php
$numero = 7;
 
for ($i = 1; $i <= 10; $i++) {
    $resultado = $numero * $i;
    echo "$numero x $i = $resultado\n";
}
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

Pruébalo

  • Imprime los números del 1 al 10 y luego del 10 al 1
  • Imprime solo los números pares entre 1 y 20, primero con $i += 2 y después con % dentro de un if
  • Suma los números del 1 al 100
  • Haz la tabla de multiplicar de un número guardado en una variable
  • Error provocado: escribe un for con la condición al revés y comprueba que no entra

Errores comunes

SíntomaCausaSolución
El ciclo no imprime nadaLa condición es falsa desde el inicioRevisa que la condición coincida con la dirección del avance
Falta la última vueltaUsaste < en vez de <=$i <= 10 incluye el 10
El acumulador solo tiene el último valorSe creó dentro del cicloCréalo antes del for
syntax error, unexpected token "," en el forSeparaste las partes con comasLas tres partes se separan con ;

Checkpoint

Intenta responder antes de desplegar cada pregunta.