You are on page 1of 5

MATRICES

Una matriz en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo es optimizado en varias formas, de modo que puede usarlo como una matriz real, o una lista (vector), tabla asociativa (caso particular de implementacin de un mapa), diccionario, coleccin, pila, cola y probablemente ms. Ya que puede tener otra matriz PHP como valor, es realmente fcil simular rboles. Existen diferentes tipos de arrays que veremos en detalle: idexadas que son las ms comunes, asociativas y multidimensionales.

IDEXADAS.- Las arrays indexadas son el tipo de matrices que ms se utilizan, en las cuales el valor del primer elemento equivale a cero, y los dems siempre aumentan en una unidad. Un ejemplo de solo un array con sus respectivos elementos sera:
array('elemento', "otro elemento", $elemento_tres, 'elemento 4') Donde el valor del primer elemento llamado 'elemento' es 0, el del segundo 'otro elemento' es 1, el de $elemento_tres es 2 y el de 'elemento 4' es 3. Esto puede escribirse de la siguiente forma para ver la equivalencia entre los elementos y sus valores:
array( 0 => 'elemento', 1 => "otro elemento", 2 => $elemento_tres, 3 => 'elemento 4' )

ASOCIATIVAS.- Las arrays asociativas son el tipo de matrices en las cuales sus
elementos se forman por pares de clave-valor, en el que la clave corresponde al nombre con el cual se acceder al elemento que no necesariamente debe ser un nmero y el valor al elemento en s. As, podemos obtener un array en el que una clave se asocia a su valor, pero a diferencia de una array indexada, sus elementos separados por comas conformados por el par clave-valor, deben separarse por los caracteres "=>". Ejemplo:
array(

'clave uno' => 'valor uno', "clave dos" => "valor dos", $elemento_tres => 'valor 3', 'clave 4' => $valor_4 ) <?php $mineral = array(

'dorado' => 'Oro', 'plateado' => 'Plata', 'brillante' => 'Diamante', 'negro' => 'Carbn' ); echo $mineral['brillante']; ?>

Resultado PHP: Diamante

MULTIDIMENSIONALES.- Las arrays multidimensionales son nada ms y nada menos


que arrays dentro de arrays. Son el tipo de matrices en las cuales sus elementos deben ser llamados por dos o ms corchetes dependiendo de cuantas matrices disponga el array, que pueden ser indexadas o asociativas.

Ejemplo PHP: (matriz bidimensional)


<?php $fruta = array( 'naranja' => array( 'propiedad' => 'jugosa', 'color' => 'naranja', 'sabor' => 'dulce' ), 'limn' => array( 'propiedad' => 'jugoso', 'color' => 'amarillo', 'sabor' => 'ctrico' ) ); echo $fruta['limn']['color']; ?>

Resultado PHP: amarillo

Ejemplo PHP: (matriz tridimensional)


<?php $marca = array( 'software' => array( 'buscador' => array('Google','Yahoo','Baidu','Bing'), 'CMS' => array('Wordpress','Joomla','Blogger') ), 'hardware' => array( 'PC' => 'Mac', 'celular' => array('Black Berry','Iphone') ) ); echo $marca['software']['buscador'][0]; ?>

Resultado PHP: Google


Los valores de la matriz estn relacionados con otra parte de la matriz que maneja el sistema. Esta otra parte de la matriz se conoce como el ndice, y es un indicador que relaciona el ndice con el valor de la matriz. El ndice no es ms que una sucesin de nmeros que enlazan con los valores , y con los que podemos acceder a los elementos de la matriz.
<?php $colores = array(verde, azul); // matriz asignada a una variable echo $colores[0]; // accedemos a los valores del array para echo $colores[1]; //imprimirlos en pantalla ?>

Para crear matrices en PHP existen dos formas: -forma implcita.- que consistira en indicarle el elemento(ya sea proporcionando su posicin o su clave).Ejemplo: $nombres[0]='Javier'; En caso de no indicarle una posicin el array tomara el valor siguiente al ultimo valor introducido. Ejemplo: $nombres[]='Lucas' // tomara como valor 1 ya que lo ultimo introducido era 0. - Mediante array().- en el cual le pasamos los elementos como parmetros. En caso de matriz indexada toman la posicin que ocupan en la creacin 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 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 nmero de elementos totales que posee la matriz. Para ello nos basamos de la funcin count(variable) donde variable representa la variable de la que se quiere obtener el nmero de elementos. Si variable es una matriz devuelve el nmero de elementos que tiene, devuelve 1 si solo tiene un elemento (aunque no sea matriz) y 0 si no tiene ningn valor. Otra funcin que nos permite saber el nmero de elementos es sizeof(matriz) . Para acceder a los elementos de una matriz asociativa debemos usar la funcin ecah() que recupera el par formado por clave y valor y adems avanza una posicin de puntero. Su sintaxis es each(matriz) y los valores que devuelve la matriz asociativa son los siguientes: Clave 0 1 key value Significado Nombre de la clave Valor asociativo de la clave Nombre de la clave Valor asociado a la clave

La funcin que realiza el constructor list(variable1,variable2...variableN) es asignar los valores del elemento actual de una matriz a las variables indicadas como parmetro

Insercin de elementos
Para la insercin de elementos dentro de un array existen una serie de funciones que nos permiten aadir elementos. Entre ellas destacamos: array_push(matriz,variable1,variableN); Aade elementos al final de la funcin y su longitud se incrementara tantos elementos como se hayan aadido array_unshift(matriz,variable1,variableN); Aade elementos al principio de la funcin desplazando a los otros tantas posiciones como elementos haya. array_pad(matriz,nuevo_tamao,valor_relleno); Aumenta el tamao de la matriz empleando un valor proporcionado como relleno.

Eliminacin 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,[tamao],[sustitutos]); Se usa para reemplazar o borrar el contenido de una porcin de matriz, para ello debemos especificar la posicin desde la cual queremos iniciar el borrado o sustitucin, el tamao o nmero de elementos que se vern afectados y los sustitutos (en caso que deseemos sustituirlo por algn elemento). array_keys(matriz,[valor buscado]); Se emplea cuando deseamos eliminar un elemento cuya posicin desconocemos. array_values(matriz); Devuelve una matriz indexada con todos los valores almacenados en la matriz pasada como parmetro.

Manipulacin masiva de matrices


array_walk(matriz,nombre_de_la_funcion,lista_parametros); Se emplea para realizar el mismo proceso definido en la funcin en todos los elementos incluidos.

Obtencin de submatrices
array_slice(matriz,posicion,tamao); Permite extraer una secuencia de elementos de una matriz. Los parmetros a pasarle son la matriz en la cual queremos extraer dichos elementos, la posicin desde la que se inicia la extraccin y el tamao de la extraccin (posiciones que abarcamos a partir de la inicial). 4

Ordenacin de matrices
Criterio Orden ascendente(matriz indexada) Orden descendente(matriz indexada) Orden ascendente por valor(matriz asociativa) Orden descendente por valor(matriz asociativa) Orden ascendente por clave(matriz asociativa) Orden descendente por clave(matriz asociativa) Funcin sort(matriz) rsort(matriz) asort(matriz) arsort(matriz) ksort(matriz) krsort(matriz)

compact() Devuelve una matriz asociativa a partir de un numero indeterminado de parmetros 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 repeticin 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.