Curso PHP: Bucle foreach

Curso PHP: Bucle foreach

En la anterior lección de PHP, hemos visto cómo crear un Array de datos y cómo acceder a sus datos de forma manual, que si disponemos de un Array simple, no hay ningún problema, pero si tenemos que iterar los datos de un Array relativamente grande, hacerlo manualmente es costoso a la vez que innecesario.

En esta lección, vamos a ver cómo iterar los objetos de un Array mediante la función de PHP foreach, la más utilizada probablemente para iterar datos en PHP por su sencillez y porque es más fácil de entender y además porque nos permite iterar Arrays asociativos con datos del tipo clave => valor.

Antes de utilizar la función foreach, debemos tener en cuenta si vamos a necesitar la clave de cada valor dentro del bucle o no, porque dependiendo de ésto, tendremos que usar la función de una forma u otra:

<?php
//Sin clave
foreach ($objetos as $objeto) { //Por cada objeto del array $objetos...
 //Hacer algo
}
 
//Con clave
foreach ($objetos as $clave => $objeto) {
 //Hacer algo
}
?>

Habiendo visto la sintaxis de la función foreach, vamos a ponerla en práctica con el mismo Array que la última lección de Arrays multidimensionales:

<?php
$notas =
	array(
		array(
			'alumno' => array('nombre' => 'Antonio', 'apellidos' => 'Gutierrez Garcia'),
			'notas' => array('prog' => 8, 'lenmarc' => 10, 'maq' => 7)
		),
		array(
			'alumno' => array('nombre' => 'Mohammed', 'apellidos' => 'Al-Watani'),
			'notas' => array('prog' => 8.5, 'lenmarc' => 8, 'maq' => 7.5)
		),
		array(
			'alumno' => array('nombre' => 'John', 'apellidos' => 'Bale'),
			'notas' => array('prog' => 6, 'lenmarc' => 6.5, 'maq' => 5.5)
		),
		array(
			'alumno' => array('nombre' => 'Vladimir', 'apellidos' => 'Kucherköv'),
			'notas' => array('prog' => 7, 'lenmarc' => 5, 'maq' => 5)
		)
	);
?>

Donde para imprimir los datos del Array, lo que hacíamos es lo siguiente:

echo '<b>' . $notas[3]['alumno']['nombre'] . ' ' . $notas[3]['alumno']['apellidos'] . '</b><br/>';
echo 'Programación: ' . $notas[3]['notas']['prog'];

Bien, vamos a hacer lo mismo pero iterando todos los objetos del Array, utilizando la función foreach de PHP:

echo '<table><tr><th>Alumno</th><th>Notas</th></tr>';
	foreach ($notas as $fila) { //Por cada fila del Array de $notas
		echo '<tr><td>';
		//Imprimir los datos del alumno
		foreach ($fila['alumno'] as $clave => $valor) {
			echo '<strong>' . $clave . '</strong>: ' . $valor . '<br/>';
		}
		echo '</td><td>';
 
		//Imprimir sus notas
		foreach ($fila['notas'] as $materia => $nota) {
			echo '<strong>' . $materia . '</strong>: ' . $nota . '<br/>';
		}
 
		echo '</td></tr>';
	}
	echo '</table>'

Las sentencias foreach anteriores nos imprimirían la siguiente tabla por pantalla:

Alumno Notas
nombre: Antonio
apellidos: Gutierrez Garcia
prog: 8
lenmarc: 10
maq: 7
nombre: Mohammed
apellidos: Al-Watani
prog: 8.5
lenmarc: 8
maq: 7.5
nombre: John
apellidos: Bale
prog: 6
lenmarc: 6.5
maq: 5.5
nombre: Vladimir
apellidos: Kucherköv
prog: 7
lenmarc: 5
maq: 5

Si os fijáis es la misma tabla que teníamos al principio de la lección anterior, que hemos pasado a un Array y que ahora hemos realizado el proceso inverso: Representar e imprimir los datos de un Array en forma de tabla.

En esta iteración, si eliminamos por ejemplo la nota de maquetación de alguno de los alumnos, no pasaría absolutamente nada. Simplemente no se imprimiría por pantalla.

Hasta aquí la lección de hoy, cualquier duda que tengáis nos la podéis hacer llegar mediante el formulario de comentarios de la parte inferior. Hasta la próxima!

Curso PHP: Arrays multidiminesionales

Publicar un comentario