En la realizacion de un script en PHP en multiples ocasiones
existen variables que tienen informacion similar y se procesan
de forma semejante.Para ello php(y otros lenguajes) poseen un
elemento denominado array.Un array es un conjunto de variables
agrupadas bajo un unico nombre. Cada variable dentro de la matriz
se denomina elemento.Dentro de la misma matriz pueden existir
variables de diferentes tipos y no es necesario que sean todas
del mismo tipo.
Hay que diferenciar entre los dos tipos de matrices existentes:
-Indexada: Aquella cuyo acceso a los elementos
se realiza por la posicion que ocupan dentro de la estructura(se
inician siempre desde la posicion 0).Ejemplo: $amigos[0]
- Asociativa: Es aquella en la que los elementos
están formados por pares clave-valor y el acceso se realiza
proporcionando una determinada clave.Ejemplo: $amigos['edad']
Para crear matrices en PHP existen dos formas:
-De forma implicita, que consistiria en indicarle el elemento(ya
sea proporcionando su posicion o su clave).Ejemplo: $nombres[0]='Javier';
En caso de no indicarle una posicion el array tomara el valor
siguiente al ultimo valor introducido.Ejemplo: $nombres[]='Lucas'
// tomaria como valor 1 ya que lo ultimo introducido era 0.
-Mediante array() en el cual le pasamos los elementos como parametros.En
caso de matriz indexada toman la posicion que ocupan en la creacion
de la matriz, mientras que los de la matriz asociativa se les
asigna su valor mediante "=>".Ejemplo: $amigo=array('Nombre'=>'Jose'
'Direccion'='Neopatria 21');
Cabe destacar que PHP no solo se limita a la existencia de matrices
por si solo sino que existen matrices de matrices, o lo que es
lo mismo,matrices multidimensionales.Ejemplo: $amigos[2]['Pedro']
Recorrido de una matriz
Disponemos de diversas herramientas para poder acceder a los
elementos de una matriz.En cada momento se mantiene una referencia
del elemento de la matriz al que se tiene acceso, por tanto, para
recorrer una matriz bastara con modificar dicha referencia.En
caso de una matriz indexada el recorrido se realizara mediante
un bucle y para ello debemos saber el número de elementos
totales que posee la matriz. Para ello nos basamos de la funcion
count(variable) donde variable representa la
variable de la que se quiere obtener el número de elementos.Si
variable es una matriz devuelve el numero de elementos que tiene,
devuelve 1 si solo tiene un elemento(aunque no sea matriz) y 0
si no tiene ningun valor.
Otra funcion que nos permite saber el número de elementos
es sizeof(matriz) .
Para acceder a los elementos de una matriz asociativa debemos
usar la funcion ecah() que recupera el par formado por clave y
valor y ademas avanza una posicion de puntero.Su sintaxis es each(matriz)
y los valores que devuelve la matriz asociativa son los
siguientes:
Clave |
Significado |
0 |
Nombre de la clave |
1 |
Valor asociativo de la clave |
key |
Nombre de la clave |
value |
Valor asociado a la clave |
La funcion que realiza el constructor list(variable1,variable2...variableN)
es asignar los valores del elemento actual de una matriz
a las variables indicadas como parametro.
Navegacion sobre matrices
Cuando se trata de matrices indexadas la navegacion es sencilla
ya que tan solo basta acceder al elemento que queremos mostrar,
pero al tratarse de alguna matriz asociativa no se puede aplicar
el mismo tratamiento. Para ello existen un conjunto de funciones
pre fabricadas que nos permiten realizar multitud de acciones:
Sintaxis |
Accion |
reset(matriz); |
El puntero interno vuelve a la primera
posicion |
end(matriz); |
El puntero interno va a la ultima posicion |
next(matriz); |
El puntero va al elemento siguiente |
prev(matriz); |
Accede al elemento anterior |
current(matriz); |
Devuelve el contenido del elemento actual |
Insercion de elementos
Para la inserción de elementos dentro de un array existen
una serie de funciones que nos permiten añadir elementos.Entre
ellas destacamos:
array_push(matriz,variable1,variableN);
Añade elementos al final de la funcion y su longitud
se incrementara tantos elementos como se hayan añadido
array_unshift(matriz,variable1,variableN);
Añade elementos al principio de la función
desplazando a los otros tantas posiciones como elementos haya.
array_pad(matriz,nuevo_tamaño,valor_relleno);
Aumenta el tamaño de la matriz empleando un valor
proporcionado como relleno.
Eliminación de elementos
array_shift(matriz);
Elimina el primer elemento de la matriz
array_pop(matriz);
Elimina el ultimo elemento de la matriz
array_splice(entrada,pos_ini,[tamaño],[sustitutos]);
Se usa para reemplazar o borrar el contenido de una porcion de
matriz, para ello debemos especificar la posicion desde la cual
queremos iniciar el borrado o sustitucion, el tamaño o
numero de elementos que se veran afectados y los sustitutos(en
caso que deseemos sustituirlo por algun elemento).
array_keys(matriz,[valor buscado]);
Se emplea cuando deseamos eliminar un elemento cuya posicion desconocemos
array_values(matriz);
Devuelve una matriz indexada con todos los valores almacenados
en la matriz pasada como parametro.
Manipulacion masiva de matrices
array_walk(matriz,nombre_de_la_funcion,lista_parametros);
Se emplea para realizar el mismo proceso definido en la funcion
en todos los elementos incluidos.
Obtencion de submatrices
array_slice(matriz,posicion,tamaño);
Permite extraer una secuencia de elementos de una matriz.Los parametros
a pasarle son la matriz en la cual queremos extraer dichos elementos,la
posicion desde la que se inicia la extraccion y el tamaño
de la extraccion(posiciones que abarcamos a partir de la inicial).
Ordenacion de matrices
Criterio |
Funcion |
Orden ascendente(matriz indexada) |
sort(matriz) |
Orden descendente(matrizi indexada) |
rsort(matriz) |
Orden ascendente por valor(matriz asociativa) |
asort(matriz) |
Orden descendente por valor(matriz asociativa) |
arsort(matriz) |
Orden ascendente por clave(matriz asociativa) |
ksort(matriz) |
Orden descendente por clave(matriz asociativa) |
krsort(matriz) |
Otras funciones
En este apartado se comentaran una serie de funciones(no todas
porque seria imposible) que nos pueden servir en cierto momento.
compact() Devuelve una matriz asociativa a partir
de un numero indeterminado de parametros
extract() Crea variables desde matriz asociativa
array_unique() Devuelve matriz sin datos repetidos
ya que algunos se eliminan
array_reverse() Devuelve matriz con mismos elementos
pero en orden inverso
shuffle() Modifica el orden de elementos de forma
aleatoria
array_count_values() Devuelve una matriz asociativa
que contiene frecuencias de repeticion de los valores de la matriz
in_array() Permite comprobar si un valor esta
en la matriz
array_merge() Combina elementos de dos matrices
en 1.