Un registro es un arreglo asociativo. Varios registros juntos son un arreglo de
arreglos: una lista donde cada elemento es, a su vez, un arreglo con claves. Tiene
exactamente la forma de una tabla: cada elemento es una fila y cada clave es una
columna.
En la Unidad 3, cuando le pidas a PostgreSQL todas las filas de una tabla, PHP te
las va a entregar con esta misma forma: un arreglo de arreglos asociativos,
uno por fila, con el nombre de cada columna como clave. Todo lo que aprendas a
hacer con este arreglo funcionará igual con los datos reales.
El color del promedio se decide antes del <tr>, en un bloque PHP: si es rojo,
$color vale "text-red-700"; si no, queda vacío. En el HTML solo se imprime. Es la
misma idea de Ciclos que generan HTML:
calcular arriba, imprimir abajo.
Qué parte escribe PHP
flowchart LR
A["$estudiantes<br/>(3 registros)"] --> B["foreach"]
B -->|"vuelta 1"| C["tr de Ana"]
B -->|"vuelta 2"| D["tr de Benjamín"]
B -->|"vuelta 3"| E["tr de Camila"]
C --> F["tbody"]
D --> F
E --> F
El <thead> se escribe una vez, a mano. Solo el <tr> de los datos está dentro
del foreach. Si mañana hay 40 estudiantes, el código no cambia.
Incorrecto: el thead dentro del foreach
Si <thead> y sus <th> quedan dentro del ciclo, la fila de encabezados se repite
antes de cada estudiante. Lo único que va dentro del ciclo es lo que cambia por
cada registro.
Correcto: mensaje cuando la lista está vacía
<?php if (count($estudiantes) === 0): ?> <p class="text-gray-600">Todavía no hay estudiantes inscritos.</p><?php else: ?> <table>…</table><?php endif; ?>
Una tabla con encabezados y sin filas parece un error. Un texto que explica que no
hay datos, no.
Pruébalo
Crea un arreglo con cinco registros de algo que te guste (películas, juegos, libros) con al menos cuatro claves
Imprime el segundo campo del tercer registro
Genera una tabla HTML desde el arreglo en una página con php -S
Pinta en rojo una celda según una condición
Vacía el arreglo ([]) y comprueba que aparece el mensaje en vez de la tabla
Error provocado: usa $registro[0]["clave"] dentro del foreach y lee el Warning
Errores comunes
Síntoma
Causa
Solución
Undefined array key 0 dentro del foreach
Usaste dos corchetes sobre el elemento, que ya es la fila
$registro["clave"], con un solo corchete
Undefined array key "nombre" en una sola fila
A ese registro le falta la clave, o está escrita distinto
Todos los registros con las mismas claves
Los encabezados se repiten en cada fila
El <thead> quedó dentro del foreach
Solo el <tr> de datos va dentro del ciclo
Checkpoint
Intenta responder antes de desplegar cada pregunta.
En $productos[2]["precio"], ¿qué significa cada corchete?
[2] es la fila: el tercer producto de la lista. ["precio"] es la columna: el
dato precio de ese producto.
Dentro de foreach ($productos as $producto), ¿cómo lees el nombre?
$producto["nombre"]. En cada vuelta, $producto ya es un registro completo.
Al generar la tabla, ¿qué va dentro del foreach y qué va afuera?
Dentro, solo el <tr> de datos: lo que cambia por cada registro. Afuera, el
<table>, el <thead> y sus <th>, que se escriben una sola vez.
¿Qué tiene que ver este arreglo con la Unidad 3?
Que la base de datos entrega las filas de una consulta con esta misma forma: un
arreglo de arreglos asociativos. El código que hoy genera la tabla desde un
arreglo escrito a mano, mañana la generará desde PostgreSQL sin cambios.