Sie sind auf Seite 1von 10

24/4/2014 ENI Training - Libro online

http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 1/10
Clave/ndice Valor
0 cero
1 uno
2 dos
3 tres
Clave/ndice Valor
20 veinte
30 treinta
10 diez
Clave/ndice Valor
0 cero
cero 0
uno 1
1 uno
dos 2
2 dos
tres 3
3 tres
Clave/ndice Valor
Matrices
1. Definicin
En PHP, una matriz es una coleccin (lista de elementos) ordenada por la pareja clave/valor.
La clave puede ser de tipo nmero entero o de tipo cadena. En el primer caso, se dice que la matriz es
numrica y la clave se designa por el trmino ndice. En el segundo caso, se dice que la matriz es
asociativa: las claves no son necesariamente consecutivas, ni ordenadas y esta matriz puede tener
claves enteras y claves de tipo cadena.
El valor asociado a la clave puede ser de cualquier tipo, incluyendo el tipo matriz, en cuyo caso se dice
que la matriz es multidimensional.
Ejemplo
Matriz numrica (ndices ordenados consecutivos)
Matriz numrica (ndices no ordenados, no consecutivos)
Matriz mixta
Matriz multidimensional (lista de ciudades por pas)
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 2/10
Clave/ndice Valor
0 cero
ESPAA Clave/ndice Valor
0 Madrid
1 Len
2 Barcelona
ITALIA Clave/ndice Valor
0 Roma
1 Venecia
2. Creacin
Una variable de tipo matriz se puede definir explcitamente a travs de la funcin array o
implcitamente mediante una notacin entre corchetes ([]).
Desde la versin 5.4, es posible utilizar una sintaxis abreviada para definir explcitamente una matriz
sin utilizar la funcin array.
Notacin entre corchetes ([ ])
Una variable utilizada por primera vez con una notacin de la forma $variable[...], se crea
automticamente con el tipo matriz.
Si se efecta la misma operacin en una variable ya definida, con un tipo escalar, produce un mensaje
de error.
El contenido de una matriz puede estar bien definido por varias asignaciones de tipo$matriz[...]
= valor.
Con una asignacin del tipo $matriz[] = valor, PHP busca el ndice entero mayor utilizado y
asocia el valor al ndice inmediatamente superior. Si la tabla est vaca, el elemento se colocar en el
ndice 0.
Con una asignacin del tipo $matriz[clave] = valor, PHP asocia el valor a la clave especificada
(que puede ser de tipo entero o de tipo cadena).
Ambas notaciones se pueden mezclar en una secuencia de asignacin.
Ejemplo
<?php
$nmeros[] = cero; // => ndice 0
$nmeros[] = uno; // => ndice max (0) + 1 = 1
$nmeros[] = dos; // => ndice max (1) + 1 = 2
$nmeros[] = tres; // => ndice max (2) + 1 = 3
$nmeros[5] = cinco; // => ndice 5
$nmeros[] = seis; // => ndice max (5) + 1 = 6
$nmeros[uno] = 1; // ndice "un"
$nmeros[] = siete; // => ndice max (6) + 1 = 7
$nmeros[-1] = menos uno; // => -1
?>
Resultado
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 3/10
1 uno
2 dos
3 tres
5 cinco
6 seis
uno 1
7 siete
-1 menos uno
Clave/ndice Valor
ESPAA Clave/ndice Valor
0 Madrid
1 Len
2 Barcelona
Estas notaciones se pueden utilizar para construir una matriz multidimensional en forma
de$matriz[...] = $matriz_interior o $matriz[...][...] = valor. La primera
notacin permite almacenar una matriz en una ubicacin de otra matriz, y la segunda notacin,
almacenar un valor directamente en una ubicacin dentro de otra matriz.
Ejemplo
Primer mtodo:
<?php
// creacin de una tabla que contiene las ciudades de Espaa
$ciudades_espaa[] = Madrid;
$ciudades_espaa[] = Len;
$ciudades_espaa[] = Barcelona;
// almacenamiento de la tabla de ciudades de Espaa en la tabla
// de ciudades
$ciudades[ESPAA] = $ciudades_espaa;
// idem con las ciudades de Italia
$ciudades_italia[] = Roma;
$ciudades_italia[] = Venecia;
$ciudades[ITALIA] = $ciudades_italia;
?>
Segundo mtodo:
<?php
// almacenamiento directo de las ciudades en la tabla
// - para Espaa
$ciudades[ESPAA][] = Madrid;
$ciudades[ESPAA][] = Len;
$ciudades[ESPAA][] = Barcelona;
// - para Italia
$ciudades[ITALIA][] = Roma;
$ciudades[ITALIA][] = Venecia;
?>
Resultado (en ambos casos)
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 4/10
ITALIA Clave/ndice Valor
0 Roma
1 Venecia
valor Elemento de la matriz.
clave Valor de la clave.
Clave/ndice Valor
0 cero
1 uno
2 dos
3 tres
5 cinco
6 seis
uno 1
La funcin array
La funcin array permite crear una matriz a partir de una lista de elementos.
Sintaxis
matriz array([mixto valor[, ...]])
o
matriz array([{cadena | entero} clave => mixto valor[, ...]])
En la primera sintaxis, las claves/ndices no se han especificado y se crea una matriz numrica con
ndices consecutivos empezando en 0: el primer argumento de la funcin se almacena en el ndice 0, el
segundo en el ndice 1, etc.
En la segunda sintaxis, el ndice o la clave se especifican ya sea mediante un nmero entero o una
cadena, y se le asocia un valor mediante el operador =>.
Ambas sintaxis se pueden mezclar. En este caso, cuando no se ha especificado el ndice o la clave, PHP
busca el ndice entero mayor utilizado y asocia el valor al ndice inmediatamente superior; si no hay
ndices enteros, el elemento se coloca en el ndice 0.
La funcin array, llamada sin argumentos, crea una matriz vaca.
Ejemplo
<?php
$nmeros = array(cero,uno,dos,tres,
5 => cinco,seis,uno => 1,siete,-1 => menos uno);
?>
Resultado
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 5/10
7 siete
-1 menos uno
Clave/ndice Valor
ESPAA Clave/ndice Valor
0 Madrid
1 Len
2 Barcelona
ITALIA Clave/ndice Valor
0 Roma
1 Venecia
La funcin array acepta como argumentos los datos de tipo matriz (ya sea una variable o una llamada
anidada en array), lo que permite crear una matriz multidimensional.
Ejemplo
Primer mtodo:
<?php
// creacin de una matriz que contiene las ciudades de Espaa
$ciudades_espaa = array(Madrid,Len,Barcelona);
// idem con las ciudades de Italia
$ciudades_italia = array(Roma,Venecia);
// almacenamiento de las 2 matrices en la tabla de ciudades
$ciudades = array(ESPAA => $ciudades_espaa,
ITALIA => $ciudades_italia);
?>
Segundo mtodo:
<?php
// creacin por anidamiento de llamadas a array
$ciudades = array(ESPAA => array(Madrid,Len,Barcelona),
ITALIA => array(Roma,Venecia));
?>
Resultado (en ambos casos)
Sintaxis corto
Desde la versin 5.4, es posible definir una matriz explcitamente utilizando una notacin entre
corchetes ([]) en lugar de la funcin array().
Ejemplo
<?php
$nmeros = [cero,uno,dos,tres,
5 => cinco,seis,uno => 1, siete,-1 => menos uno];
?>
Al igual que al utilizar la funcin array(), otra matriz puede definirse como elemento, ya sea con la
funcin array(), o bien con la sintaxis corta como en el siguiente ejemplo.
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 6/10
$matriz Matriz correspondiente.
clave Valor de la clave/ndice.
Ejemplo
<?php
$ciudades = [FRANCIA => [Pars,Lyon,Nantes],
ITALIA => [Roma,Venecia]];
?>
Esta sintaxis corta permite aligerar la escritura en un cierto nmero de situaciones (pasar de una matriz
en parmetro a una funcin, definicin de matrices multidimensionales)..
3. Manipulacin
En el manejo de matrices existen dos necesidades comunes:
Acceder a un elemento individual de la matriz.
Examinar la matriz.
Acceder a un elemento individual de la matriz
La notacin entre parntesis se utiliza para acceder, leer o escribir, un elemento individual de la matriz:
$matriz[{cadena | entero} clave]
Para las matrices multidimensionales, se deben utilizar varias series de corchetes.
Ejemplo
<?php
$nmeros = array(cero,uno,dos,tres,
5 => cinco,seis,uno => 1,siete,-1 => menos uno);
echo $nmeros[1],<br />;
echo $nmeros[un],<br />;
$ciudades = array(ESPAA => array(Madrid,Len,Barcelona),
ITALIA => array(Roma,Venecia));
echo $ciudades[ESPAA][0],<br />;
echo $ciudades[ITALIA][1],<br />;
?>
Resultado
uno
1
Madrid
Venecia
PHP acepta que omita el delimitador de cadena (comillas o apstrofo) cuando especifica una clave de
tipo cadena en una matriz asociativa.
Ejemplo
<?php
$nmeros = array(uno => 1,dos => 2);
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 7/10
// utilizacin de $nmeros[uno] y no $nmeros[uno]
echo $nmeros[uno];
?>
Resultado (si los errores de tipo E_NOTICE no se muestran)
1
Resultado (si los errores de tipo E_NOTICE se muestran)
Notice: Use of undefined constant uno - assumed uno in /app/scripts/index.php
on line 4
1
Esta sintaxis se acepta (y funciona), pero genera un error de tipo E_NOTICE. PHP considera que la
constante uno no existe y la sustituye por la cadena uno ..., lo que permite obtener el resultado
correcto... hasta el da en que defina una constante uno con valor 1, por ejemplo. En consecuencia, no
se recomienda utilizar esta sintaxis "simplificada".
El principio de sustitucin de variables en las cadenas delimitadas por comillas funciona con las
matrices. Es necesario utilizar llaves para delimitar la expresin en dos casos:
Para especificar una clave de tipo cadena expresada en forma de un literal:
{$matriz[...]}
Para una matriz multidimensional:{$matriz[...][...]}
Ejemplo
<?php
$nmeros = array(cero,uno,dos,tres,
5 => cinco,seis,uno => 1,siete,-1 => menos uno);
echo "\$nmeros[1] = $nmeros[1]<br />";
echo "\$nmeros[un] = {$nmeros[uno]}<br />";
$ciudades = array(ESPAA => array(Madrid,Len,Barcelona),
ITALIA => array(Roma,Venecia));
echo "\$ciudades[ESPAA][0] = {$ciudades[ESPAA][0]}<br />";?>
Resultado
$nmeros[1] = uno
$nmeros[un] = 1
$ciudades[ESPAA][0] = Madrid
Examinar la matriz
Se pueden utilizar multitud de mtodos para examinar una matriz con las siguientes construcciones:
la estructura de control iterativa for
la estructura de control iterativa while
la estructura de examen de matriz foreach
En este captulo, slo estudiaremos el uso de la estructura foreach, que es sin duda la forma ms
fcil de examinar una matriz. Este mtodo no requiere ningn conocimiento especial sobre la naturaleza
de la matriz (numrica, asociativa, rango de ndices/claves...).
Sintaxis
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 8/10
foreach(matriz as variable_valor)
{ instrucciones }
o
foreach(matriz as variable_clave => variable_valor)
{ instrucciones }
La primera sintaxis permite examinar la matriz de principio a fin; en cada iteracin, el valor actual de la
matriz se almacena en la variable variable_valor y las instrucciones entre llaves se ejecutan. Esta
sintaxis es suficiente si el procesamiento no necesita hacer referencia a los valores de la clave.
La segunda sintaxis funciona en base al mismo principio, pero en cada iteracin, la clave actual se
almacena en la variable variable_clave y el valor en la variable variable_valor. Esta sintaxis
es til si el procesamiento necesita hacer referencia a los valores de la clave.
Ejemplo
<?php
// Inicializacin de una matriz.
$nmeros = array(cero,uno,dos,
cero => 0,uno => 1,dox => 2);
// Examen de la matriz con la primera sintaxis.
echo Primera sintaxis:<br />;
foreach($nmeros as $nmero) {
echo "$nmero<br />";
}
// Examen de la matriz con la segunda sintaxis
echo Segunda sintaxis:<br />;
foreach($nmeros as $clave => $nmero) {
echo "$clave => $nmero<br />";
}
?>
Resultado
Primera sintaxis:
cero
uno
dos
0
1
2

Segunda sintaxis:
0 => cero
1 => uno
2 => dos
cero => 0
uno => 1
dos => 2
Estos dos ejemplos demuestran que no es necesario ningn conocimiento previo de la matriz para
examinarla: ni su tamao, ni su estructura de claves.
Desde la versin 5.5, la estructura foreach permite examinar una matriz de matrices y recuperar los
elementos de la matriz anidada en variables con la ayuda de la funcin list.
Sintaxis
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 9/10
Nombre Funcin
count Cuenta el nmero de elementos de una matriz.
in_array Comprueba si un valor est presente en una matriz.
array_search Busca un valor en una matriz.
array_replace Reemplaza valores de una matriz.
[a|k][r]sort Ordena una matriz (varias variantes posibles).
explode Divide una cadena segn un separador y almacena los
elementos en una matriz.
implode Reagrupa los elementos de una matriz en una cadena
mediante un separador.
str_split Divide una cadena en fragmentos de longitud fija y almacena
los elementos en una matriz.
Array_column Devuelve los valores de una columna de una matriz
foreach(matriz as list(variable[,... ]))
En cada iteracin, los elementos de la matriz anidada actual se almacenan en las variables enumeradas
en la funcin list (primer elemento en la primera variable, segundo elemento en la segunda variable,
etc.).
Ejemplo
<?php
$capitales = [[FRANCIA,Pars],[ITALIA,Roma]];
foreach ($capitales as list($pas,$ciudad)) {
echo "$pas: $ciudad<br />";
}
?>
Resultado
FRANCIA: Pars
ITALIA: Roma
En la funcin list, si hay menos variables que elementos en la tabla anidada, los elementos
sobrantes de esta ltima se ignorarn. Por el contrario, si hay muchas variables en la funcinlist, se
generar una alerta de nivel NOTICE y las variables sobrantes no se inicializarn.
4. Alcance
Las variables de tipo matriz siguen las mismas reglas de alcance y de duracin que las variables de tipo
escalar (vase seccin Variables - Alcance y duracin).
5. Funciones tiles
PHP ofrece un gran nmero de funciones que permiten manipular las matrices.
Las funciones utilizadas con mayor frecuencia son:
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=85124 10/10
multidimensional.
variable Variable en cuestin.
La funcin is_array (vase la seccin Tipos de datos - Funciones tiles) permite conocer si una
variable es de tipo matriz. Recuerde.
Existen muchas otras funciones y puede consultar la descripcin de cada funcin en lnea
enwww.php.net. Ah encontrar, especialmente, funciones para:
realizar clculos (suma...)
extraer una submatriz de una matriz
fusionar matrices
desduplicar una matriz...
count
La funcin count permite conocer el nmero de elementos en una variable en general, una matriz en
particular.
Sintaxis
entero count (mixto variable)

Das könnte Ihnen auch gefallen