You are on page 1of 7

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 &ltimo 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 &ltima 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

You might also like