Recorrer un array bidimensional requiere un poco de esfuerzo extra, ya que mantiene algo más de complejidad, pero en realidad se trata tan solo de anidar dos bucles, tal y como veremos en los siguientes ejemplos.
En el primero vamos a utilizar un código extraido del libro de McGrawHill (PHP manual de referencia) en el cual veremos como se anidan los dos bucles for para recorrer un array bidimensional:
$calificaciones[0][0] = 79
$calificaciones[0][1] = 74
$calificaciones[1][0] = 69
$calificaciones[1][1] = 84
Esto que puede resultar muy útil para algunos ejercicios en realidad es menos útil que si trabajamos con arrays asociativos, es decir, en este ejemplo no sabemos a quien se refieren las clasificaciones pero en el siguiente ejemplo vamos a ver como se introduce el array dentro de una tabla y como se presenta mucho mejor la información con un array asociativo.
Aquí vemos como se declara el array asociativo, como se declara una tabla con su cabecera, y finalmente introducimos los dos foreach anidados.
En el primer foreach se declara la fila y la primera columna de la misma añadiendo el nombre mientras que en el segundo se recorren las notas y se van añadiendo en las diferente columnas.
Finalmente antes de que termine el ciclo exterior se cierra la fila y se vuelve a empezar con el siguiente nombre... dando el siguiente resultado:
Como puedes observar el resultado final es mucho más legible y entendible que si solo usamos los bucles y sin que los arrays sean asociativos.
Esto que a la hora de verse por primera vez puede resultar un tanto complejo es en realidad muy sencillo y lo utilizaremos en muchas ocasiones, por lo que os animo a hacer vuestras propias practicas.
Nota: El estilo de la tabla debería de ir en un archivo externo CSS, pero para ilustrar el ejemplo y no complicar su comprensión introduciendo archivos separados he preferido dejarlo embebido dentro del código.
En el primero vamos a utilizar un código extraido del libro de McGrawHill (PHP manual de referencia) en el cual veremos como se anidan los dos bucles for para recorrer un array bidimensional:
<html> <head> <title> Recorrido por matrices multidimensionales </title> </head> <body> <h1>Recorrido por matrices multidimensionales</h1> <?php $calificaciones[0][] = 79; $calificaciones[0][] = 74; $calificaciones[1][] = 69; $calificaciones[1][] = 84; for ($exterior = 0; $exterior < count($calificaciones); $exterior++){ for($interior = 0; $interior < count($calificaciones[$exterior]); $interior++){ echo "\$calificaciones[$exterior][$interior] = ", $calificaciones[$exterior][$interior], "<br>"; } } ?> </body> </html>Analizando los dos bucles vemos como se anidan considerando que cada elemento del array exterior envuelve a un array interior que se cuenta en el segundo for, lo cual nos da como resultado:
$calificaciones[0][0] = 79
$calificaciones[0][1] = 74
$calificaciones[1][0] = 69
$calificaciones[1][1] = 84
Esto que puede resultar muy útil para algunos ejercicios en realidad es menos útil que si trabajamos con arrays asociativos, es decir, en este ejemplo no sabemos a quien se refieren las clasificaciones pero en el siguiente ejemplo vamos a ver como se introduce el array dentro de una tabla y como se presenta mucho mejor la información con un array asociativo.
<html> <head> </head> <body> <?php $notas ['Paco'] [0] = "5"; $notas ['Paco'] [1] = "6.7"; $notas ['Paco'] [2] = "3"; $notas ['Paco'] [3] = "8"; $notas ['María'] [0] = "3"; $notas ['María'] [1] = "7"; $notas ['María'] [2] = "6"; $notas ['María'] [3] = "9"; $notas ['Pepe'] [0] = "4"; $notas ['Pepe'] [1] = "8"; $notas ['Pepe'] [2] = "5"; $notas ['Pepe'] [3] = "8"; print_r($notas); echo '<p>Como se muestra con una tabla en un doble bucle foreach</p>'; echo '<table style="padding: 15px; border:1px solid gray;">'; echo '<tr><td>Nombre</td><td>Nota 1</td><td>Nota2</td><td>Nota3</td><td>Nota 4</td></tr>'; foreach ($notas as $nombre => $valor) { echo '<tr style="padding: 15px; background-color: gray;">'; echo '<td style="padding: 15px;">' . $nombre . '</td>'; foreach ($valor as $key => $value) { echo '<td style="padding: 15px;"> ' . $value . '</td>'; } echo '</tr>'; } echo '</table>'; ?> </body> </html>
Aquí vemos como se declara el array asociativo, como se declara una tabla con su cabecera, y finalmente introducimos los dos foreach anidados.
En el primer foreach se declara la fila y la primera columna de la misma añadiendo el nombre mientras que en el segundo se recorren las notas y se van añadiendo en las diferente columnas.
Finalmente antes de que termine el ciclo exterior se cierra la fila y se vuelve a empezar con el siguiente nombre... dando el siguiente resultado:
Como puedes observar el resultado final es mucho más legible y entendible que si solo usamos los bucles y sin que los arrays sean asociativos.
Esto que a la hora de verse por primera vez puede resultar un tanto complejo es en realidad muy sencillo y lo utilizaremos en muchas ocasiones, por lo que os animo a hacer vuestras propias practicas.
Nota: El estilo de la tabla debería de ir en un archivo externo CSS, pero para ilustrar el ejemplo y no complicar su comprensión introduciendo archivos separados he preferido dejarlo embebido dentro del código.
No hay comentarios:
Publicar un comentario