·
Uso de Arrays
Ordenar arrays
Podemos ordenar los elementos de un array, tanto en
orden ascendente (de menor a mayor), como en orden desdendente (de mayor a
menor). Si el array contiene elementos númericos esto es fácil de entender,
pero si los elementos son cadenas de texto, la ordenación se hará por orden
alfabético.
Para ello utilizaremos las siguientes funciones, en
todas ellas dentro del paréntesis (parámetro) escribiremos la variable que
contiene el array:
En arrays indexados
sort($array): Ordena el array en orden ascendente
rsort($array): Ordena el array en orden descendente
En arrays asociativos
asort($array): Ordena el array en orden ascendente por valor.
arsort($array): Ordena el array en orden descendente por valor.
ksort($array): Ordena el array en orden ascendente por clave.
krsort($array): Ordena el array en orden descendente por clave.
Estas funciones cambian el orden de los elementos en
el array original, por lo que si queremos conservar el array original debemos
hacerle una copìa , Después podremos trabajar con la copia o, si trabajamos con
el original, recuperar su estado inicial asignando su valor a la copia
(operador de asignación =).
Insertar elementos
Insertar un elemento en un array asociativo es lo
mismo que asignarle al array un nuevo elemento con una nueva clave.
Seguiremos con el array de ejemplo de la página
anterior:
$cap=array("España"=>"Madrid",
"Francia"=>"París",
"Inglaterra"=>"Londres",
"Italia"=>"Roma", "Portugal"=>"Lisboa",
"Alemania"=>"Berlín");
Si queremos insertar un nuevo elemento lo haremos de
la siguiente manera:
$cap["Bélgica"]="Bruselas";
El elemento se añadirá al final del array. Si la clave
proporcionada corresponde con la de algún elemento ya existente, éste cambiará
su valor. Si el array estaba ordenado, bien por claves o por valores, para
volver a ordenarlo aplicaremos alguna de las funciones vistas anteriormente.
Añadir elementos en un array indexado es algo más
complicado, ya que si lo hacemos como en los arrays asociativos, en el corchete
debemos escribir el número del elemento, en este caso, el valor dado sustituye
al del elemento que ocupa ese lugar.
Existen sin embargo una serie de funciones que añaden
elementos a un array indexado. Estas son:
array_push($array,"elemento1","elemento2");:
añade elementos al final del array, dándoles como índice el número que les
corresponda. Dentro del paréntesis escribiremos el nombre del array, y después
separado por una coma, el elemento o elementos que queramos insertar. Podemos
poner un sólo elemento o varios, separados por comas.
array_unshift($array,"elemento1","elemento2");:
añade elementos al principio del array, los índices de los demás elementos se
reordenan según su posición. Los parámetros pasados dentro del paréntesis son
iguales que en la función anterior.
array_pad($array,"tamaño","elemento_relleno");:
Esta función da un nuevo tamaño al array. los nuevos elementos creados Tendrán
el valor del "elemento de relleno". los parámetros que pasamos en el
paréntesis son:
$array:
nombre del array que pretendemos modificar.
"tamaño": nuevo tamañó que tendrá el array.
"elemento_relleno": Valor que tendrán los nuevos elementos que
se formen al dar un nuevo tamaño.
Eliminar
elementos
Existen también varias funciones para eliminar
elementos de un array. Estas son:
array_shift($array): Elimina el primer elemento del
array.
array_pop($array): Elimina el último elemento del
array.
array_keys($array,"valor"): Elimina el
elemento cuyo valor coincida con "valor"
array_unique($array): Elimina los elementos repetidos
que haya en el array
Otras funciones
Veremos aquí otras funciones útiles para trabajar con
arrays, aunque no vamos a verlas todas, éstas son las más habituales:
array_reverse($array);: Devuelve un array con los
mismos elementos pero en orden inverso.
in_array($array,"valor");: Comprueba si un
valor está dentro de del array. Devuelve un valor boleano (verdadero 1 o falso
"")
array_slice($array,posicion,tamaño);: Extraemos parte
de los elementos de un array indexado en un nuevo array, para ello $array, es
el array del que partimos. posicion es el índice del elemento a partir del cual
se formará el nuevo array, y en tamaño indicaremos aquí el número de elementos
que tendrá el nuevo array. Si no ponemos este último parámetro el nuevo array
se forma desde el elemento indicado en posicion hasta el final.
array_values($array);: Devuelve un array indexado
cuando le pasamos un array asociativo. Las claves se eliminan, y en su lugar
tenemos los índices.
array_merge($array1,$array2);: Devuelve un array que
tendrá los elementos de los dos arrays pasados como parámetros, es decir el
nuevo array consiste en la suma de los otros dos.
Arrays multidimensionales
Como hemos visto anteriormente, un array es una lista
en la que se guardan varios datos o elementos. Sin embargo muchas veces una
lista no es suficiente para guardar los datos, y estos quedan mejor si los
guardamos en una tabla.
La solución para guardar una tabla en un array es
crear un array multidimensional, es decir un array en el que cada uno de sus
elementos es a su vez otro array.
En el array principal guardaremos la tabla. mientras
que en cada uno de sus elementos guardaremos una fila de la tabla.
Nada nos impide que cada uno de los elementos de los
arrays que forman las filas sea a su vez otro array, con lo que podríamos tener
un array en tres dimensiones. También podemos formar arrays de más de tres
dimensiones, aunque puede ser que sea dificil de manejarlos.
Es conveniente que para llevar un cierto orden en la tabla
que queremos mostrar, cada uno de los arrays secundarios (filas) tenga el mismo
número de elementos, así facilitaremos el trabajo de visualización en pantalla.
para mostrar los arrays multidimensionales en pantalla
necesitaríamos un código muy complicado, ya que según lo visto hasta ahora
debemos mostrar uno a uno todos los elementos. Sin embargo existen una serie de
estructuras que veremos más adelante, que hacen que esto se simplifique
bastante.
·
Tipos de Declaraciones
La forma más simple de definir un array es mediante la
instrucción array(). Dentro del paréntesis escribimos los valores o variables
que contiene el array, separados por comas:
$temporadas=array("primavera",
"verano", "otoño", "invierno");
Dentro del array podemos poner todo tipo de datos,
tanto cadenas de texto, como números enteros o decimales, o booleanos, o poner
variables que contengan esos datos, El siguiente array mezcla todo tipo de
datos:
$miarray=array("Juan",,32,17.5,true);
Definir un
array por sus elementos
También podemos definir un array definiendo
directamente sus elementos, por ejemplo si escribimos:
$turnos[0]="mañana";
$turnos[1]="tarde";
$turnos[2]="noche";
Es lo mismo que si hubieramos escrito:
$turnos=
array("mañana","tarde",noche");
Esta forma de definir arrays simplemente definiendo
sus elementos plantea algunos problemas: por ejemplo, ¿qué pasa si al definir
un elemento no hemos definido los anteriores?. Pues simplemente que los
anteriores no existen. el número de elementos, es el que tiene, sin embargo
para leer el elemento deberemos usar el número que le hemos dado, y no el que
le correspondería por su orden.
Por ejemplo, si escribimos :
$a[5]="hola";
Creamos un array de un solo elemento, sin embargo para
leerlo debemos escribir echo "$a[5]";, con el número 5, aunque sea el
primer elemento del array.
Definir arrays
asociativos
Para definir una array asociativo debemos definir para
cada elemento tanto su valor como su clave. para ello utilizaremos el siguiente
código:
$miarray=array("clave1"=>"valor1","clave2"=>"valor2"
... "claveN"=>"valorN");
Es decir para crear el array definimos cada
elememento, el cual se compone de dos partes, una la clave, y otra el valor,
escribimos el elemento de la siguiente manera
"clave"=>"valor".
Veamos un ejemplo de aray asociativo.
$cap=array("España"=>"Madrid",
"Francia"=>"París",
"Inglaterra"=>"Londres",
"Italia"=>"Roma",
"Portugal"=>"Lisboa", "Alemania"=>"Berlín");
En este array los datos o valores guardados son
algunas capitales europeas, mientras que la clave para acceder a ellas son los
paises a los que pertenecen.
·
Tipos de Arrays
En una variable tenemos la posibilidad de almacerar
una estructura de datos compleja; para ello podemos asignarle, en vez de un
dato simple, otro más complejo conocido como array.
Estos arrays son datos capaces de albergar otros
datos, y poder acceder a ellos a través de un índice.
En primer lugar tenemos los arrays más simples, los
que solo pueden albergar datos simples y con un índice numérico (índice por
defecto en PHP).
En segundo lugar tenemos los arrays asociativos, cuyo
índice ya no es numérico, sinó que tendrá los valores que nosotros le demos.
Por último tenemos los arrays más complejos, que se
hacen llamar arrays multidimensionales. Éstos, a su vez, pueden ser asociativos
o no serlo.
Estos últimos son los que nos dan la posibilidad
realmente de almacerar una estructura compleja de datos en una sola variable.
tipos de array
·
Funciones Útiles para el Uso de Arrays
un buen listado interesante de funciones para trabajar
con arrays en PHP.
array_change_key_case
— Devuelve una matriz con todas las claves de las cadenas convertidas a
mayúsculas o minúsculas
array_chunk
— Divide una matriz en segmentos
array_combine — Crea una nueva matriz, usando una matriz para las claves
y otra para sus valores
array_count_values — Cuenta todos los valores de una matriz
array_diff_assoc — Comprueba las diferencias entre matrices teniendo en
cuenta los índices
array_diff_key — Calcula la diferencia de matrices usando las llaves
para la comparación
array_diff_uassoc — Computa la diferencia entre matrices con un chequeo
adicional de índices, el cual es realizado por una llamada de retorno entregada
por el usuario
array_diff_ukey — Calcula la
diferencia de matrices usando callback function on the keys for comparison
array_diff — Comprueba las
diferencias entre matrices
array_fill_keys — Fill an array with
values, specifying keys
array_fill — Llena una matriz con
valores
array_filter
— Filtra elementos de una matriz mediante una función “callback”
array_flip —
Intercambia los valores de una matriz con sus índices
array_intersect_assoc — Calcula la intersección de matrices verificando
que también coincidan los índices
array_intersect_key — Calcula la intersección de matrices usando las
llaves para la comparación
array_intersect_uassoc — Calcula la intersección de matrices con chequeo
de índices adicional por una función de usuario
array_intersect_ukey — Calcula la intersecció de matrices usando una
función de usuario para la comparación de los índices
array_intersect — Calcula la intersección de matrices
array_key_exists — Comprueba si el índice o clave dada existe en la
matriz
array_keys —
Devuelve todas las claves de una matriz
array_map — Aplica
la llamada de retorno especificada a los elementos de las matrices dadas
array_merge_recursive — Une dos o más matrices recursivamente
array_merge
— Combina dos o más matrices
array_multisort — Ordena múltiples matrices, o matrices multi-dimensionales
array_pad —
Rellena una matriz con un valor hasta el tamaño especificado
array_pop —
Extrae el último elemento de la matriz
array_product — Calcula el producto de valores en una matriz
array_push —
Inserta uno o más elementos al final de la matriz
array_rand —
Selecciona una o más entradas aleatorias de una matriz
array_reduce
— Reduce iterativamente una matriz a un solo valor usando una función llamada
de retorno
array_reverse — Devuelve una matriz con los elementos en orden inverso
array_search
— Busca un valor determinado en una matriz y devuelve la clave correspondiente
en caso de éxito
array_shift
— Extrae un elemento del comienzo de la matriz
array_slice
— Extrae una porción de la matriz
array_splice
— Suprime una porción de la matriz y la sustituye por otra cosa
array_sum —
Calcula la suma de los valores en una matriz
array_udiff_assoc — Computa la diferencia entre matrices con un chequeo
de índices adicional, comparando los datos con una llamada de retorno
array_udiff_uassoc — Computa la diferencia entre matrices con un chequeo
de índices adicional, comparando los datos y los índices con una llamada de
retorno
array_udiff
— Computa la diferencia entre matrices, usando una llamada de retorno para la
comparación de datos
array_uintersect_assoc — Calcula la intersección de matrices con chequeo
adicional de ídices, comparando los datos por una función del usuario
array_uintersect_uassoc — Calcula la intersección de matrices con
chequeo adicional de índices, compara los datos y los índices por una función
del usuario
array_uintersect — Calcula la interseccón de matrices, compara los datos
con una función del usuario
array_unique
— Remueve valores duplicados de una matriz
array_unshift — Introduce uno o más elementos al principio de la matriz
array_values
— Devuelve todos los valores de una matriz
array_walk_recursive — Aplicar una función de usuario recursivamente a
cada miembro de una matriz
array_walk —
Aplica una función del usuario a cada elemento de una matriz.
array —
Crear una matriz
arsort —
Ordena una matriz en orden inverso y mantiene la asociación de índices
asort —
Ordena una matriz y mantiene la asociación de índices
compact — Crea
una matriz que contiene variables y sus valores
count —
Cuenta los elementos de una matriz o propiedades de un objeto
current —
Devuelve el elemento actual de una matriz
each —
Devuelve el siguiente par clave/valor de una matriz y avanza el apuntador
end — Mueve
el puntero interno de una tabla al último elemento
extract —
Importa variables a la tabla de símbolos desde una matriz
in_array —
Revisa si un valor existe en una matriz
key —
Obtiene una clave de una matriz asociativa
krsort —
Ordena una matriz por clave en orden inverso
ksort —
Ordena una matriz por clave
list —
Asigna variables como si fueran una matriz
natcasesort
— Ordena una matriz usando un algoritmo de “orden natural” sin distinguir
mayúsculas de minúsculas
natsort —
Ordena una matriz usando un algoritmo de “orden natural”
next —
Avanza el puntero interno de una matriz
pos — Alias
de current
prev —
Rebobina el puntero interno de una matriz
range — Crea
una matriz que contiene un rango de elementos
reset — Fija
el puntero interno de una matriz a su primer elemento
rsort —
Ordena una matriz en orden inverso
shuffle —
Mezcla una matriz
sizeof —
Alias of count
sort —
Ordena una matriz
uasort —
Ordena una matriz mediante una función de comparación definida por el usuario y
mantiene la asociación de índices
uksort —
Ordena una matriz por claves mediante una función definida por el usuario
usort — Ordena
una matriz por sus valores usando una función de comparación definida por el
usuario