Aquí se juntan las dos unidades. El ciclo escribe una vez el HTML que se repite,
y PHP lo multiplica. El resultado que recibe el navegador es HTML normal, como si lo
hubieras escrito a mano.
La sintaxis para vistas: for (…): y endfor;
Igual que el if en if, elseif y else,
los ciclos tienen una forma con dos puntos pensada para envolver HTML.
La indentación del resultado sale rara, y no importa
Los espacios que quedan antes de cada <?php se copian en cada vuelta, por eso
el HTML resultante queda con sangrías irregulares. El navegador las ignora. Lo
que importa es que tu archivo .php esté bien indentado.
Incorrecto: armar el HTML con echo y concatenación
Funciona, pero las etiquetas quedan dentro de comillas: VSCode no las
autocompleta, Prettier no las ordena, y cada atributo necesita comillas escapadas.
Funciona porque el navegador envía el texto visible, pero si después cambias el
texto (por ejemplo, a “Año 2026”), cambia también el dato que llega al servidor.
Igual que en la Unidad 1,
cada <option> lleva su value.
Dejar una opción seleccionada
Para que una opción aparezca elegida, se le agrega el atributo selected. Dentro
del ciclo, un if (…): decide en cada vuelta si esta opción es la elegida:
Por cada vuelta del ciclo de afuera, el de adentro hace todas sus vueltas.
5 filas × 5 columnas = 25 celdas.
Correcto: calcular la clase arriba, imprimirla abajo
La clase de cada fila se decide en un bloque PHP antes del <tr>: $fondo
parte vacía y solo en las filas pares cambia a "bg-gray-100". En el HTML solo se
imprime <?= $fondo ?>. Así la etiqueta queda corta y la decisión se lee como un
if normal.
Las filas de una tabla real vienen de datos
Esta tabla se calcula. Las tablas de un sitio (productos, inscritos, notas) se
generan desde un arreglo con foreach, que es lo que viene en la
Parte 5. La
estructura es la misma: un ciclo por las filas y otro por las columnas.
Pruébalo
Genera una lista <ul> de diez elementos con for (…): y endfor;
Genera un <select> con los años desde el actual hasta 1960 y revisa en F12 que cada opción tiene value
Deja una opción seleccionada con un if (…): dentro del ciclo
Haz la tabla de multiplicar del 1 al 10 con filas alternadas
Error provocado: borra el endfor; y lee el error
Errores comunes
Síntoma
Causa
Solución
syntax error, unexpected end of file
Falta el endfor; (o endwhile;, endforeach;)
Cada ciclo con : necesita su cierre
Sale una sola opción
El <option> quedó fuera del ciclo
El HTML que se repite va entrefor (…): y endfor;
Todas las opciones salen con selected
La condición del if es siempre verdadera, o usaste =
Compara con ===
syntax error, unexpected token "<"
Escribiste HTML dentro de un bloque PHP
Cierra el bloque con ?> antes del HTML y vuelve a abrirlo después
Checkpoint
Intenta responder antes de desplegar cada pregunta.
¿Por qué en una vista se prefiere for (…): con endfor; sobre las llaves?
Porque entre bloques de HTML un <?php } ?> no dice qué cierra, y endfor; sí.
Además el HTML queda fuera de las comillas, y VSCode lo puede autocompletar.
Generaste un <select> con un ciclo y el servidor recibe el texto en vez del número. ¿Qué falta?
El value en cada <option>. Sin value, el navegador envía el texto visible.
En dos for anidados de 3 y 4 vueltas, ¿cuántas veces se ejecuta el cuerpo de adentro?
12: por cada una de las 3 vueltas de afuera, el de adentro hace sus 4.
¿Cómo marcas como elegida la opción que coincide con $elegido?
Con un if ($n === $elegido): dentro del ciclo: en esa vuelta se imprime la
opción con selected, y en el else: la opción sin él.