domingo, 7 de septiembre de 2014

PHP (02) Cadenas y matrices (11) Matrices multidimensionales

¿Que significa eso de matrices multidimensionales? Pues bien, hasta ahora solo hemos trabajado con matrices unidimensionales, es decir una series de parejas nombre/valor, pero ahora vamos a complicarlo un poco, imaginemos que cada nombre (índice) esta compuesto también por otro array...
Podemos observar esto de forma sencilla en la siguiente imagen:
Vemos como un array unidimensional sería una pila de cajas, mientras que uno bidimensional (los más comunes) es una pared de ellas y los array multidimensionales pueden ser cubos de cajas. Nosotros nos basaremos en los bidimensionales de forma general.

Una vez entendido el concepto, nos aparece una nueva pregunta ¿Como declaro un array multidimensional? bueno la mejor forma de verlo es con un ejemplo:
<?php
 $notas ['Paco'] [1] = "5";
 $notas ['Paco'] [2] = "6.7";
 $notas ['Paco'] [3] = "3"; 
 $notas ['Paco'] [4] = "8";
 $notas ['María'] [1] = "3";
 $notas ['María'] [2] = "7";
 $notas ['María'] [3] = "6";
 $notas ['María'] [4] = "9";

 print_r($notas);

 echo '<p>La segunda nota de Paco es: ' . $notas ['Paco'] [2] . '</p>';
?>

Se puede observar que hemos creado un array $notas que tiene dos elementos con índice asociativo: ['Paco'] y ['María'], los cuales a su vez tienen diferentes subíndices (empezando desde el 1 por que los hemos puesto a mano). De esta forma tenemos nuestro array bidimensional que conceptualmente sería algo así:
[Paco] => Array ( [1] => 5 [2] => 6.7 [3] => 3 [4] => 8 )
[María] => Array ( [1] => 3 [2] => 7 [3] => 6 [4] => 9 )

Es decir dos filas donde la primera son las notas de Paco y la segunda la de María.

En la última linea del script estamos solicitando una nota del array en este caso la segunda nota de Paco, dando como resultado 6.7.

Como puedes ver es todo muy sencillo, pero ahora nos podría venir la siguiente pregunta... ¿como introduzco valores nuevos en estos array? bueno la respuesta es muy sencilla, tan solo hay que saber que queremos hacer, supongamos que queremos introducir una nota nueva a Paco y María, para ello solo hay que introducirlos de igual manera que en la declaración:
$notas ['Paco'] [5] = "7";
$notas ['María'] [5] = "6";

Incluso si quisiéramos meter un nuevo alumno, la forma sería igual de simple, solo habría que incluir las siguientes líneas:
$notas ['Pepe'] [1] = "4";
$notas ['Pepe'] [2] = "8";
$notas ['Pepe'] [3] = "5"; 
$notas ['Pepe'] [4] = "8";

De este modo nuestra matriz ahora mismo tendría tres filas, Paco, María y Pepe...

En el siguiente articulo recorreremos estos arrays bidimensionales con ciclos, algo que nos será muy útil en el futuro.

No hay comentarios:

Publicar un comentario