You are on page 1of 6

Arrays

Un array (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 para varios usos diferentes; puede ser usado
como una matriz real, una lista (vector), tabla asociativa (caso particular de implementación de
un mapa), diccionario, colección, pila, cola y probablemente más. Ya que los valores de
un array pueden ser otros arrays, también es posible crear árboles y arrays multidimensionales.

Una explicación sobre tales estructuras de datos se encuentra por fuera del propósito de este
manual, pero encontrará al menos un ejemplo de cada uno de ellos. Para más información,
consulte la extensa literatura que existe sobre este amplio tema.

Sintaxis

Especificación con array()

Un valor array puede ser creado por la construcción de lenguaje array(). Ésta toma un cierto


número de parejas clave => valor separadas con coma.

array( key => value


, ...
)
// key puede ser un integer o string
// value puede ser cualquier valor
<?php
$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // bar
echo $arr[12];    // 1
?>

Un key puede ser un integer o bien un string. Si una clave es la representación estándar de


un integer, será interpretada como tal (es decir, "8"será interpretado como 8, mientras
que "08" será interpretado como "08"). Los valores float en key serán truncados a valores
tipo integer. Los tipos de arrays indexados y asociativos son el mismo tipo en PHP, el cual
pueden contener índices tipo integer o string.

Un valor puede ser de cualquier tipo en PHP.

Note:

Intentar acceder a un array cuya key no está defina es lo mismo que acceder a cualquier otra
variable no definida: Se producirá un error de nivelE_NOTICE, y el resultado será NULL.

<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

echo $arr["somearray"][6];    // 5
echo $arr["somearray"][13];   // 9
echo $arr["somearray"]["a"];  // 42
?>
Si no especifica una key para un valor dado, entonces es usado el máximo de los índices integer,
y la nueva key será ese valor máximo más 1. Si se especifica una key que ya tiene un valor
asignado, ése valor será sobrescrito.

<?php
// Este array es lo mismo que...
array(5 => 43, 32, 56, "b" => 12);

// ...este array
array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
?>

Un arreglo puede ser construído explicitando elemento a elemento, cada uno de los cuales puede tener un tipo distinto:

$a[0] = 13;

$a[1] = "xxx";

$a[3] = 42;

$a[4] = 1.992;

También se puede usar la función array(), que toma una lista variable de argumentos y retorna un arreglo con ellos:

$a = array(13, "xxx", 42, 1.992 );

echo $a[3]; # Imprime 42

Nótese que array() es una función, y por tanto sólo puede usarse al lado derecho de una expresión. Para operaciones de

asignación múltiples, así como para recibir explícitamente valores de una función que retorna un arreglo, se usa el

constructo list():

list($a,$b,$c,$d) = array( 13, "xxx", 42, 1.992 );

function pareja_historica() {

$duo[0] = "sanson";

$duo[1] = "dalila";

return $duo;
};

list($hombre, $mujer) = pareja_historica();

[Nota para programadores PERL] El uso de array() y list() requiere tiempo adicional de experiencia para usuarios de Perl,

puesto que en Perl estos operadores son implícitos.

Existe una forma fácil de agregar elementos a un arreglo unidimensional, simplemente no se especifica la posición del

elemento nuevo:

$animales[0] = "perro";

$animales[1] = "gato";

$animales[] = "vaca"; # Lo mismo que $animales[2] = "vaca"

Para un arreglo multidimensional, se utilizan las mismas ideas anteriores, combinadas recursivamente:

$a[0][0] = "Elemento cero,cero";

$a[0][1] = "Elemento cero,uno";

$a[1][0] = "Elemento uno,cero";

$a[1][1] = "Elemento uno,uno";

$a[0] = array( "Elemento cero,cero", "Elemento cero,uno" );

$a[1] = array( "Elemento uno,cero", "Elemento uno,uno" );

$a = array(array( "Elemento cero,cero", "Elemento cero,uno" ),


array( "Elemento uno,cero", "Elemento uno,uno" ));

Dentro de un string y cuando corresponde, sólo los arreglos unidimensionales son interpolados:

$str = "Este es el $a[0][1]"; # No funciona


$str = "Este es el " . $a[0][1]; # Ahora sí

Arreglos Asociativos

Un arreglo asociativo es un arreglo en que los índices son strings, del mismo modo que en una tabla de hashing.

$apellido["Pedro"] = "González";

$apellido["José"] = "Pérez";

$apellido["Juan"] = "Zapata";

[Nota para programadores PERL] En PHP se utiliza corchete [] y no llave {}, para arreglos asociativos.

array() también puede usarse para crear arreglos asociativos, utilizando '=>' para explicitar las llaves.

$apellido = array( "Pedro" => "González", "José" => "Pérez", "Juan" =>
"Zapata" );

PHP presenta mucha flexibilidad. Se pueden incluso crear arreglos multidimensionales, mezclando llaves que son números o

strings.

Un Array es una colección de valores. Los array pueden ser unidimensionales (vectores), bidimensionales
(matrices) y multidimensionales (más de dos dimensiones)
Los arrays se utilizan ampliamente en el lenguaje PHP. Se utiliza el delimitador [] para acceder a los diferentes
elementos del vector.

Se lo puede crear al vuelo, sin tener que declararlo:

$dias[0]=31;
$dias[1]=28;
Luego de estas dos líneas, tenemos creado un vector de dos elementos, a los cuales accedemos por un subíndice
que comienza a numerarse desde cero.
echo $dias[0]; //31
echo $dias[1]; //28
El vector, como podemos ver, puede ir creciendo en forma dinámica, es decir que si ahora hacemos:
$dias[2]=31;
el vector tiene 3 componentes.

También podemos obviar el subíndice cuando asignamos los valores:


$dias[]=31;
$dias[]=28;
$dias[]=31;
Automáticamente comienza a numerarse desde cero.

Si necesitamos conocer el tamaño del vector en cualquier momento podemos llamar a la función count.
echo count($dias); //3

Si queremos imprimir todos los elementos en la página podemos hacer:


<?php
$nombres[]="juan";
$nombres[]="pedro";
$nombres[]="ana";
for($f=0;$f<count($nombres);$f++)
{
echo $nombres[$f];
echo "<br>";
}
?>

La función sizeof(<nombre del vector>) es equivalente a count


Otra forma de inicializar un vector es definirlo e inicializarlo simultáneamente:
$edades=array("menores","jovenes","adultos");
Estamos definiendo el vector edades con tres componentes, numeradas automáticamente de cero a dos.

Arays asociativos

Este tipo de vectores no es común a otros lenguajes, pero en PHP son de uso indispensable en distintas situaciones
(ya lo empleamos cuando recuperamos información de un formulario accediendo al vector $_REQUEST que crea
PHP en forma automática, cuando accedamos a datos de una base de datos también lo emplearemos etc.)
Un vector asociativo permite acceder a un elemento del vector por medio de un subíndice de tipo string.

Inicialmente uno piensa que esto nos complica las cosas, como veremos más adelante la realidad nos demuestra lo
contrario.
Como ejemplo, consideremos que deseamos guardar en un vector el DNI, nombre y dirección de una persona.
Empleando un vector con subíndice entero la solución sería:

<?php
$registro[]="20456322";
$registro[]="Martinez Pablo";
$registro[]="Colon 134";
?>

De esta forma debemos recordar que cuando deseamos mostrar el nombre de la persona debemos acceder al
subíndice 1. Esto es sencillo si tenemos un vector con tres elementos, pero que sucede si debemos almacenar 20
datos relacionados en un vector?

Un vector asociativo se define de la siguiente forma:


<?php
$registro['dni']="20456322";
$registro['nombre']="Martinez Pablo";
$registro['direccion']="Colon 134";
echo $registro['nombre'];
?>

Ahora vemos que para imprimir el nombre de la persona no debemos recordar una posición dentro de un vector
sino un nombre de clave. Esto se hace indispensable cuando administramos un conjunto de datos grandes.
En un vector asociativo toda componente está asociada a una clave.

Otras formas de crear un vector asociativo:


<?php
$registro=array('dni'=>'20456322',
'nombre'=>'Martinez Pablo',
'direccion'=>'Colon 134');
echo $registro['dni'];
?>

You might also like