Vemos algunas de las funciones tpicas del trabajo con arrays a
travs de una pequea explicacin y un ejemplo de uso.
Vamos a ver varios ejemplos de trabajo con arrays (arreglos, vectores, matrices o tablas en castellano) en PHP que ilustrarn un poco el funcionamiento de algunas de las funciones de arrays ms populares que trae consigo PHP. Sin ms, vamos a introducirnos en materia con varios ejemplos interesantes de manejo de vectores. Referencia:os arrays en PHP se e!plican en el art"culo #ablas o $rrays en PHP. Modificar el nmero de elementos de un array $%ora vamos a ver varios ejemplos mediante los cuales nuestros arrays pueden aumentar o reducir el n&mero de casillas disponibles. Reducir el tamao de un array arrayslice!" Para disminuir el n&mero de casillas de un arreglo tenemos varias funciones. 'ntre ellas, array(slice() la utili)amos cuando queremos recortar algunas casillas del arreglo, sabiendo los "ndices de las casillas que deseamos conservar. *ecibe tres parmetros. 'l array, el "ndice del primer elemento y el n&mero de elementos a tomar, siendo este <imo parmetro opcional. 'n el ejemplo siguiente tenemos un array con cuatro nombres propios. 'n la primera ejecuci+n de array(slice() estamos indicando que deseamos tomar todos los elementos desde el "ndice , (el principio) %asta un n&mero total de - elementos. 'l segundo array(slice() indica que se tomen todos los elementos a partir del "ndice . (segunda casilla). <? $entrada = array ("Miguel", "Pepe", "Juan", "Julio", "Pablo"); //modifico el tamao $!alida = array"!lice ($entrada, #, $); //mue!tro el array foreac% ($!alida a! $actual) ec%o $actual & "<br'"; ec%o "<p'"; //modifico otra (e) $!alida = array"!lice ($!alida, *); //mue!tro el array foreac% ($!alida a! $actual) ec%o $actual & "<br'"; ?' #endr como salida/ 0iguel Pepe 1uan Pepe 1uan arrays#ift!" 'sta funci+n e!trae el el primer elemento del array y lo devuelve. $dems, acorta la longitud del array eliminando el elemento que estaba en la primera casilla. Siempre %ace lo mismo, por tanto, no recibir ms que el array al que se desea eliminar la primera posici+n. 'n el c+digo siguiente se tiene el mismo vector con nombres propios y se ejecuta dos veces la funci+n array(s%ift() eliminando un elemento en cada ocasi+n. Se imprimen los valores que devuelve la funci+n y los elementos del array resultante de eliminar la primera casilla. <? $entrada = array ("Miguel", "Pepe", "Juan", "Julio", "Pablo"); //+uito la primera ca!illa $!alida = array"!%ift ($entrada); //mue!tro el array ec%o ",a funci-n de(uel(e. " & $!alida & "<br'"; foreac% ($entrada a! $actual) ec%o $actual & "<br'"; ec%o "<p'"; //+uito la primera ca!illa, +ue a%ora !er/a la !egunda del array original $!alida = array"!%ift ($entrada); ec%o ",a funci-n de(uel(e. " & $!alida & "<br'"; //mue!tro el array foreac% ($entrada a! $actual) ec%o $actual & "<br'"; ?' 2a como resultado/ a funci+n devuelve/ 0iguel Pepe 1uan 1ulio Pablo a funci+n devuelve/ Pepe 1uan 1ulio Pablo unset!" Se utili)a para destruir una variable dada. 'n el caso de los arreglos, se puede utili)ar para eliminar una casilla de un array asociativo (los que no tienen "ndices num3ricos sino que su "ndice es una cadena de caracteres). Veamos el siguiente c+digo para conocer c+mo definir un array asociativo y eliminar luego una de sus casillas. <? $e!tadio!"futbol = array("0arcelona"=' "1ou 2amp","3eal Madrid" =' "4antiago 0ernabeu","5alencia" =' "Me!talla","3eal 4ociedad" =' "6noeta"); //mo!tramo! lo! e!tadio! foreac% ($e!tadio!"futbol a! $indice='$actual) ec%o $indice & " 77 " & $actual & "<br'"; ec%o "<p'"; //eliminamo! el e!tadio a!ociado al real madrid un!et ($e!tadio!"futbol8"3eal Madrid"9); //mo!tramo! lo! e!tadio! otra (e) foreac% ($e!tadio!"futbol a! $indice='$actual) ec%o $indice & " 77 " & $actual & "<br'"; ?' a salida ser la siguiente/ 4arcelona 55 6ou 7amp *eal 0adrid 55 Santiago 4ernabeu Valencia 55 0estalla *eal Sociedad 55 $noeta 4arcelona 55 6ou 7amp Valencia 55 0estalla *eal Sociedad 55 $noeta Aumentar el tamao de un array #enemos tambi3n a nuestra disposici+n varias funciones que nos pueden ayudar a aumentar el n&mero de casillas de un arreglo. arraypus#!" 8nserta al final del array una serie de casillas que se le indiquen por parmetro. Por tanto, el n&mero de casillas del array aumentar en tantos elementos como se %ayan indicado en el parmetro de la funci+n. 2evuelve el n&mero de casillas del array resultante. Veamos este c+digo donde se crea un arreglo y se a9aden luego tres nuevos valores. <? $tabla = array (",agarti:a", "6raa", "Perro", ";ato", "3at-n"); //aumentamo! el tamao del array array"pu!%($tabla, ";orri-n", "Paloma", "<!o"); foreac% ($tabla a! $actual) ec%o $actual & "<br'"; ?' 2a como resultado esta salida/ agartija $ra9a Perro :ato *at+n :orri+n Paloma ;so arraymerge!" $%ora vamos a ver c+mo unir dos arrays utili)ando la funci+n array(merge(). $ 3sta se le pasan dos o ms arrays por parmetro y devuelve un arreglo con todos los campos de los vectores pasados. 'n este c+digo de ejemplo creamos tres arrays y luego los unimos con la funci+n array(merge() <? $tabla = array (",agarti:a", "6raa", "Perro", ";ato", "3at-n"); $tabla= = array ("*=","$>",">?","?=","*="); $tabla$ = array ("4auce","Pino","1aran:o","2%opo","Perro","$>"); //aumentamo! el tamao del array $re!ultado = array"merge($tabla, $tabla=, $tabla$); foreac% ($re!ultado a! $actual) ec%o $actual & "<br'"; ?' 2a como resultado/ agartija $ra9a Perro :ato *at+n .< -= => >< .< Sauce Pino 6aranjo 7%opo Perro -= ?na <ima cosa. #ambi3n pueden introducirse nuevas casillas en un arreglo por los m3todos %abituales de asignar las nuevas posiciones en el array a las casillas que necesitemos. 'n arrays normales se %ar"a as"/ $tabla = array ("4auce","Pino","1aran:o"); $tabla8$9="6lgarrobo"; 'n arrays asociativos/ $e!tadio!"futbol = array("5alencia" =' "Me!talla","3eal 4ociedad" =' "6noeta"); $e!tadio!"futbol8"0arcelona"9= "1ou 2amp"; para/ jorge primero que nada %ay un error en el segundo foreac%, deberias de recorrer la @tabla< de esta manera se puede %acer la suma de los valores de las claves que sean iguales, %asta a%i todo va bien, pero despues tienes un problema con el arreglo @result ya que la funcion array(merge solo une las dos matrices, y lo que se necesita es otra funcion que manipule los dos arreglos para el resultado que quieres %acer, aqui les mando una solucion sencilla/ AB @tabla C array (D#omatesD CE D-D, DPatatasD CE DFD, DHarinaD CE D.,,D, D#ruc%asD CE D.-D, D$guaD CE DFD)G @tabla< C array (DPerjilD CE D.<D,D#omatesD CE D-=D,DSardinasD CE D=>D,DPatatasDCED.,D)G ec%oDAbrEDG HIrecorremos @tabla y verificamos si alguna clave de @tabla e!iste en @tabla< si es true se recorre @tabla<IH foreac%(@tabla as @J CE @v.)K if (array(Jey(e!ists(@J, @tabla<)) K foreac%(@tabla< as @J< CE @v<) K HHreali)amos la operacion de sumar los valores de las claves iguales if(@JCC@J<)K @v. C @v. L @v<G HHmandamos a imprimir ec%o M8ngrediente/ M.@J<.M ud/ M.@v.. M AbrEMG N N N N HHtomo los elementos de @tabla que no estan en @tabla< y lo asigno a una variable @aC array(diff(Jey(@tabla, @tabla<)G HHrecorremos la nueva variable que se %a convertido en un nuevo array foreac%(@a as @bCE@c)K HHmandamos a imprimir sus claves con sus valores ec%o M8ngrediente/ M.@b.M ud/ M .@c. MAbrEMG N HHtomo los elementos de @tabla< que no estan presentes en @tabla y los muestro @jC array(diff(Jey(@tabla<, @tabla)G foreac%(@j as @bCE @c)K ec%o M8ngrediente/ M.@b.M ud/ M.@c. M AbrEMG N BE