Matrices
| En la realización
de un script en PHP en múltiples ocasiones existen variables que
tienen información similar y se procesan de forma semejante. Para
ello PHP posee un elemento denominado array. Un array es un conjunto de
variables agrupadas bajo un único 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 posición que
ocupan dentro de la estructura (se inician siempre desde la posición
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 implícita,
que consistiría en indicarle el elemento(ya sea proporcionando su
posición o su clave).Ejemplo: $nombres[0]='Javier'; En caso de no
indicarle una posición el array tomara el valor siguiente al ultimo
valor introducido.Ejemplo: $nombres[]='Lucas' // tomaría como valor
1 ya que lo ultimo introducido era 0.
-
Mediante array()
en el cual le pasamos los elementos como parámetros. En caso de
matriz indexada toman la posición que ocupan en la creación
de la matriz, mientras que los de la matriz asociativa se les asigna su
valor mediante "=>".Ejemplo: $amigo=array('Nombre'=>'Gaston','Direccion'=>'Cupara
3254');
Cabe destacar que PHP no solo
se limita a la existencia de matrices por sí 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 bastará
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 función
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 número de elementos
que tiene, devuelve 1 si solo tiene un elemento (aunque no sea matriz)
y 0 si no tiene ningún valor.
Otra función que nos permite
saber el número de elementos es sizeof(matriz)
.
Para acceder a los elementos de
una matriz asociativa debemos usar la función ecah()
que recupera el par formado por clave y valor y además avanza una
posición 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 función que realiza el
constructor list(variable1,variable2...variableN)
es asignar los valores del elemento
actual de una matriz a las variables
indicadas como parámetro.
Navegación sobre matrices
Cuando se trata de matrices indexadas
la navegación 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
prefabricadas que nos permiten realizar multitud de acciones:
|
Sintaxis
|
Acción
|
|
reset(matriz)
|
El puntero interno vuelve a la
primera posición |
|
end(matriz)
|
El puntero interno va a la ultima
posición |
|
next(matriz)
|
El puntero va al elemento siguiente |
|
prev(matriz)
|
Accede al elemento anterior |
|
current(matriz)
|
Devuelve el contenido del elemento
actual |
Inserción 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 función 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 último elemento
de la matriz
array_splice(entrada,pos_ini,
[tamaño],[sustitutos]);
Se usa para reemplazar o borrar
el contenido de una porción de matriz, para ello debemos especificar
la posición desde la cual queremos iniciar el borrado o sustitución,
el tamaño o número de elementos que se verán afectados
y los sustitutos (en caso que deseemos sustituirlo por algún elemento).
array_keys(matriz,[valor buscado]);
Se emplea cuando deseamos eliminar
un elemento cuya posición desconocemos. |
|
array_values(matriz);
Devuelve una matriz indexada con
todos los valores almacenados en la matriz pasada como parámetro.
Manipulación masiva de
matrices
array_walk(matriz,nombre_de_la_funcion,lista_parametros);
Se emplea para realizar el mismo
proceso definido en la función en todos los elementos incluidos.
Obtención de submatrices
array_slice(matriz,posicion,tamaño);
Permite extraer una secuencia de
elementos de una matriz. Los parámetros a pasarle son la matriz
en la cual queremos extraer dichos elementos, la posición desde
la que se inicia la extracción y el tamaño de la extracción
(posiciones que abarcamos a partir de la inicial).
Ordenación
de matrices
|
Función
|
Criterio
|
|
sort(matriz)
|
Orden ascendente(matriz indexada) |
|
rsort(matriz)
|
Orden descendente(matriz indexada) |
|
asort(matriz)
|
Orden ascendente por valor(matriz
asociativa) |
|
arsort(matriz)
|
Orden descendente por valor(matriz
asociativa) |
|
ksort(matriz)
|
Orden ascendente por clave(matriz
asociativa) |
|
krsort(matriz)
|
Orden descendente por clave(matriz
asociativa) |
Otras funciones
En este apartado se comentaran una
serie de funciones que nos
pueden servir en cierto momento.
|
compact()
|
Devuelve una matriz asociativa
a partir de un numero indeterminado de parámetros |
|
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 repetición 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. |
|