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