Creacin de tablas por medio de variables tipo array.
Un array es una variable que est compuesta de varios elementos cada uno de ellos catalogado dentro de ella misma por medio de una clave. Ejemplo: Array sentido $sentido[1]!ver!" $sentido[#]!tocar!" $sentido[$]!oir!" $sentido[%]!gustar!" $sentido[&]!oler!" En este caso este array cataloga sus elementos' com(nmente llamados valores' por n(meros. )os n(meros del 1 al & son por lo tanto las claves y los sentidos son los valores asociados. *ada nos impide emplear nombres +cadenas, para clasi-icarlos. )o (nico que deberemos .acer es entrecomillarlos: /0p.p $moneda[!espana!]!1eseta!" $moneda[!-rancia!]!2ranco!" $moneda[!usa!]!3olar!" 04 5tra -orma de de-inir id6nticamente este mismo array y que nos puede ayudar para la creaci7n de arrays ms complejos es la siguiente sinta8is: /0p.p $monedaarray+!espana!4 !1eseta!'!-rancia! 4 !2ranco!'!usa! 4 !3olar!," 04 Una -orma muy prctica de almacenar datos es mediante la creaci7n de arrays multidimensionales +tablas,. 1or ejemplo: 9ueremos almacenar dentro de una misma tabla el nombre' moneda y lengua .ablada en cada pa:s. 1ara .acerlo podemos emplear un array llamado pa:s que vendr de-inido por estas tres caracter:sticas +claves,. 1ara crearlo' deber:amos escribir una e8presi7n del mismo tipo que la vista anteriormente en la que meteremos una array dentro del otro. Este proceso de incluir una instrucci7n dentro de otra se llama anidamiento: /0p.p $paisarray + !espana! 4array + !nombre!4!Espa;a!' !lengua!4!<astellano!' !moneda!4!1eseta! ,' !-rancia! 4array + !nombre!4!2rancia!' !lengua!4!2ranc6s!' !moneda!4!2ranco! , ," ec.o $pais[!espana!][!moneda!] ==>aca en pantalla: !1eseta! 04 ?uc.as son las -unciones propuestas por 1@1 para el tratamiento de arrays' entre ellas tenemos: Funcin Descripcin arrayAvalues +miAarray, )ista los valores contenidos en miAarray asort+miAarray, y arsort+miAarray, 5rdena por orden al-ab6tico directo o inverso en -unci7n de los valores count+miAarray, *os da el numero de elementos de nuestro array 3ocente: Bng. Ciuliana 2iorella )ecca 5rrego 1 Programacin Avanzada Dsort+miAarray, y Drsort+miAarray, 5rdena por orden al-ab6tico directo o inverso en -unci7n de las claves list +$variable1' $variable#...,miAarray Asigna cada una variable a cada uno de los valores del array ne8t+miAarray,' prev+miAarray,' reset+miAarray, y end+miAarray, *os permiten movernos por dentro del array con un puntero .acia delante' atras y al principio y al -inal. eac.+miAarray, *os da el valor y la clave del elemento en el que nos encontramos y mueve al puntero al siguiente elemento. 3e gran utilidad es tambi6n el bucle foreach que recorre de -orma secuencial el array de principio a -in. FUNCIONES !"IC#S DE$ %#&#'O CON #%%#(S )odificar el n*mero de elementos de un array A.ora vamos a ver varios ejemplos mediante los cuales nuestros arrays pueden aumentar o reducir el n(mero de casillas disponibles. %educir el tama+o de un array array,slice-. 1ara disminuir el n(mero de casillas de un arreglo tenemos varias -unciones. Entre ellas' arrayAslice+, la utiliEamos cuando queremos recortar algunas casillas del arreglo' sabiendo los :ndices de las casillas que deseamos conservar. Fecibe tres parmetros. El array' el :ndice del primer elemento y el n(mero de elementos a tomar' siendo este (ltimo parmetro opcional. En el ejemplo siguiente tenemos un array con cuatro nombres propios. En la primera ejecuci7n de arrayAslice+, estamos indicando que deseamos tomar todos los elementos desde el :ndice G +el principio, .asta un n(mero total de $ elementos. El segundo arrayAslice+, indica que se tomen todos los elementos a partir del :ndice 1 +segunda casilla,. /0p.p $entrada array +!?iguel!' !1epe!' !Huan!' !Hulio!' !1ablo!," ==modi-ico el tama;o $salida arrayAslice +$entrada' G' $," ==muestro el array -oreac. +$salida as $actual, ec.o $actual . !/br4!" ec.o !/p4!" ==modi-ico otra veE $salida arrayAslice +$salida' 1," ==muestro el array -oreac. +$salida as $actual, ec.o $actual . !/br4!" 04 Iendr como salida: ?iguel 1epe Huan 1epe Huan array,shift-. Esta -unci7n e8trae el el primer elemento del array y lo devuelve. Adems' acorta la longitud del array eliminando el elemento que estaba en la primera casilla. >iempre .ace lo mismo' por tanto' no recibir ms que el array al que se desea eliminar la primera posici7n. 3ocente: Bng. Ciuliana 2iorella )ecca 5rrego # Programacin Avanzada En el c7digo siguiente se tiene el mismo vector con nombres propios y se ejecuta dos veces la -unci7n arrayAs.i-t+, eliminando un elemento en cada ocasi7n. >e imprimen los valores que devuelve la -unci7n y los elementos del array resultante de eliminar la primera casilla. /0p.p $entrada array +!?iguel!' !1epe!' !Huan!' !Hulio!' !1ablo!," ==quito la primera casilla $salida arrayAs.i-t +$entrada," ==muestro el array ec.o !)a -unci7n devuelve: ! . $salida . !/br4!" -oreac. +$entrada as $actual, ec.o $actual . !/br4!" ec.o !/p4!" ==quito la primera casilla' que a.ora ser:a la segunda del array original $salida arrayAs.i-t +$entrada," ec.o !)a -unci7n devuelve: ! . $salida . !/br4!" ==muestro el array -oreac. +$entrada as $actual, ec.o $actual . !/br4!" 04 3a como resultado: )a -unci7n devuelve: ?iguel 1epe Huan Hulio 1ablo )a -unci7n devuelve: 1epe Huan Hulio 1ablo unset-. >e utiliEa para destruir una variable dada. En el caso de los arreglos' se puede utiliEar para eliminar una casilla de un array asociativo +los que no tienen :ndices num6ricos sino que su :ndice es una cadena de caracteres,. Jeamos el siguiente c7digo para conocer c7mo de-inir un array asociativo y eliminar luego una de sus casillas. /0p.p $estadiosA-utbol array+!Karcelona!4 !*ou <amp!'!Feal ?adrid! 4 !>antiago Kernabeu!'!Jalencia! 4 !?estalla!'!Feal >ociedad! 4 !Anoeta!," ==mostramos los estadios -oreac. +$estadiosA-utbol as $indice4$actual, ec.o $indice . ! LL ! . $actual . !/br4!" ec.o !/p4!" ==eliminamos el estadio asociado al real madrid unset +$estadiosA-utbol[!Feal ?adrid!]," ==mostramos los estadios otra veE -oreac. +$estadiosA-utbol as $indice4$actual, ec.o $indice . ! LL ! . $actual . !/br4!" 04 )a salida ser la siguiente: 3ocente: Bng. Ciuliana 2iorella )ecca 5rrego $ Programacin Avanzada Karcelona LL *ou <amp Feal ?adrid LL >antiago Kernabeu Jalencia LL ?estalla Feal >ociedad LL Anoeta Karcelona LL *ou <amp Jalencia LL ?estalla Feal >ociedad LL Anoeta #umentar el tama+o de un array Ienemos tambi6n a nuestra disposici7n varias -unciones que nos pueden ayudar a aumentar el n(mero de casillas de un arreglo. array,push-. Bnserta al -inal del array una serie de casillas que se le indiquen por parmetro. 1or tanto' el n(mero de casillas del array aumentar en tantos elementos como se .ayan indicado en el parmetro de la -unci7n. 3evuelve el n(mero de casillas del array resultante. Jeamos este c7digo donde se crea un arreglo y se a;aden luego tres nuevos valores. /0p.p $tabla array +!)agartija!' !Ara;a!' !1erro!' !Cato!' !Fat7n!," ==aumentamos el tama;o del array arrayApus.+$tabla' !Corri7n!' !1aloma!' !5so!," -oreac. +$tabla as $actual, ec.o $actual . !/br4!" 04 3a como resultado esta salida: )agartija Ara;a 1erro Cato Fat7n Corri7n 1aloma 5so array,mer/e-. A.ora vamos a ver c7mo unir dos arrays utiliEando la -unci7n arrayAmerge+,. A 6sta se le pasan dos o ms arrays por parmetro y devuelve un arreglo con todos los campos de los vectores pasados. En este c7digo de ejemplo creamos tres arrays y luego los unimos con la -unci7n arrayAmerge+, /0p.p $tabla array +!)agartija!' !Ara;a!' !1erro!' !Cato!' !Fat7n!," $tabla# array +!1#!'!$%!'!%&!'!&#!'!1#!," $tabla$ array +!>auce!'!1ino!'!*aranjo!'!<.opo!'!1erro!'!$%!," ==aumentamos el tama;o del array $resultado arrayAmerge+$tabla' $tabla#' $tabla$," -oreac. +$resultado as $actual, ec.o $actual . !/br4!" 04 3a como resultado: )agartija Ara;a 1erro 3ocente: Bng. Ciuliana 2iorella )ecca 5rrego % Programacin Avanzada Cato Fat7n 1# $% %& &# 1# >auce 1ino *aranjo <.opo 1erro $% Una (ltima cosa. Iambi6n pueden introducirse nuevas casillas en un arreglo por los m6todos .abituales de asignar las nuevas posiciones en el array a las casillas que necesitemos. En arrays normales se .ar:a as:: $tabla array +!>auce!'!1ino!'!*aranjo!," $tabla[$]!Algarrobo!" En arrays asociativos: $estadiosA-utbol array+!Jalencia! 4 !?estalla!'!Feal >ociedad! 4 !Anoeta!," $estadiosA-utbol[!Karcelona!] !*ou <amp!" 3ocente: Bng. Ciuliana 2iorella )ecca 5rrego &