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í
Se puede interpolar colocando la variable que contiene un array entre llaves {}
$str = "Este es el {$a[0][1]}"; # Entre llaves si funciona