domingo, 27 de noviembre de 2011

Matrices en PHP (I)


Ya casi ni me acuerdo de lo que es PHP, tras más de un mes sin 'tocar' este blog. Circunstancias, circunstancias, malditas circunstancias...


Valencia, 27/11/2011, G.B.
Hace algún tiempo os comentaba que el próximo post iba a ser sobre las matrices en PHP, un tipo de variables muy importante en programación. Bien, ha llegado el momento. Allá voy.

Una matriz es un tipo de variable que representa a un conjunto de datos a los cuales se puede acceder individualmente a través de su índice u ordenación.  Su nomenclatura oficial es array. Así, los arrays nos permiten asignar más de un valor a una sola variable para luego recuperar cualquiera de sus valores a través de su ordenación o índice. Resaltar que el primer elemento de una matriz o array es el cero (0), a no ser que indiquemos lo contrario.

Bueno, tras esta descripción bastante teórica, vamos a empezar a ilustrar el concepto con un ejemplo. Imaginemos que queremos guardar en variables el número de libros que hemos leído durante el pasado año, si somos buenos lectores, claro:



<?php
$libros_enero = 1; // poco, has leído poco, amiguito
$libros_febrero = 2; // el doble que el mes anterior, no está mal
$libros_marzo = 4; // Otra vez el doble. Muy bien!
$libros_abril = 5; // Aumentamos pero ñlo que no puede ser, no puede ser
$libros_mayo = 6; // Idem del mes anterior
$libros_junio = 7; // Bien, seguimos creciendo en sabiduría...
$libros_julio = 1; // Uy, aquí hemos caído. 'Back to square one'
?> 


Una vez declaradas todas las variables, podríamos utilizar el siguiente código para recuperar los valores de cada una de ellas. Vamos a utilizar primero las cadenas de bloque que ya hemos visto:


<?php
echo <<< LIBROS

Número de libros que he leído:
- En enero: $libros_enero <br />
- En febrero $libros_febrero <br />
- En marzo $libros_marzo <br />
- etc., etc... <br />
LIBROS;
?> 

El resultado será el siguiente texto:

- En enero: 1
- En febrero: 2
- En Marzo: 4
- etc., etc...

Desde luego, hay más formas de operar y declarar las matrices. Como por ejemplo:



<?php
$libros= array (2, 5, 8, 12); 
?> 


Acabamos de crear una matriz (de nuevo $libros) con cuatro elementos. El primero tiene el valor 2, el segundo 5, el tercero 8 y el cuarto 12.  PHP entenderá que hemos creado la matriz gracias al uso de la palabra reservada array, y que tiene cuatro elementos. Son los números enteros que van entre paréntesis y separados por comas. También podrían ser otro tipo de datos, como cadenas de texto, por ejemplo. Para recuperar los valores de la matriz podríamos volver a utilizar el código anterior, un echo utilizando una cadena en bloque:

Para añadir otro elemento a la matriz que hemos creado, simplemente debemos especificarlo:


<?php
$libros[]= 7;
?>

Y ahora hemos añadido otro elemento a la matriz $libros. Como observamos, para hacerlo simplemente la hemos llamado añadiéndole un corchete de apertura y otro de cierre, indicando seguidamente a través del signo de igualdad el nuevo valor de la matriz, nuestro añadido número 7. El motor de PHP de nuevo entenderá que es una matriz y que acabamos de añadir un nuevo elemento con el valor (numérico en este caso) 7. Vamos a verlo unido, indicando además una nueva instrucción para comprobar los valores de la matriz que hemos creado (print_r):



<?php
$libros= array (2, 5, 8, 12); 
$libros[]= 7;
print_r ($libros);
?>  


El resultado será el siguiente:

Array ([0]==>2 [1]==>5 [2]==>8 [3]==>12 [4]==>2 [4]==>7 )El primer elemento [0] tiene el valor 2, el segundo elemento [1] tiene el valor 5, el tercer elemento [2] tiene el valor 8, el cuarto elemento de la matriz [3] tiene como valor el12 y, por último, el quinto elemento de la matriz que hemos añadido ennuestra segunda línea de código $libros[]= 7;), tiene como valor el 7.

Bueno, hasta aquí la primera parte, muy teórica, lo sé. En la segunda parte veremos unos cuántos más ejemplos y cosas que se me pueden haber escapado...

Ver ejemplo

Algunos enlaces interesantes al respecto:
- Matrices en PHP (PHP.net): http://php.net/manual/es/language.types.array.php
- Matrices en PHP (php-es.com):  http://www.php-es.com/language.types.array.html
- Matrices (Array): http://www.webtaller.com/manual-php/matrices-array.php