Lecciones de PHP - Lección 10 - Arrays
Hasta esta lección hemos trabajado solo con variables numéricas y de texto. En esta vamos a conocer los arrays. Los arrays pueden incluir tanto valores numéricos como cadenas. Por eso se llaman precisamente arrays (arreglos).
La idea del array es la siguiente: hay múltiples claves y múltiples valores. A cada clave del array le corresponde un valor. Por ejemplo, si tenemos las claves 1, 2 y 3, sus valores podrían ser 4, 'Hello World' y true. Los arrays se definen igual que las variables, con el signo de dólar:
$tree = array();
Pero para crear un array usamos la función array()
.
En realidad, declarar un array, igual que declarar variables en PHP, no es obligatorio. Pero para comprender mejor el código, siempre es bueno saber de dónde vienen las variables y de qué tipo son.
Ahora vamos a definir el array mencionado anteriormente:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); ?>
Fíjate en la sintaxis. Al principio es como una variable normal: le asignamos un valor. Luego usamos la palabra clave array
, que indica que será un array. Dentro de los paréntesis definimos pares clave/valor.
Se escriben así:
array( clave1 => valor1, clave2 => valor2, );
Primero va la clave, luego el signo igual seguido inmediatamente por el signo mayor que (>), un espacio y luego el valor. Tras cada par clave/valor se pone una coma. Así para cada par del array.
También se puede escribir el array en una sola línea:
<?php $tree = array(1 => 4, 2 => 'Hello World', 3 => true); ?>
En ambos casos la variable $tree
será igual. Solo que la primera forma es más legible. Las reglas de estilo las veremos más adelante, ahora lo importante es entender el concepto.
Para mostrar un array en pantalla, usamos la función print_r()
. A diferencia de print
, esta función usa paréntesis.
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print_r($tree); ?>
Esto mostrará en pantalla:
Array ( [1] => 4 [2] => Hello World [3] => 1 )
Si agregamos la etiqueta <pre>
, el resultado se verá mejor:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
Obtendremos algo como esto:
Array ( [1] => 4 [2] => Hello World [3] => 1 )
Ahora que sabemos crear arrays, probemos extraer valores:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print $tree[2]; ?>
Así mostramos el segundo valor del array: 'Hello World'. Para acceder a un valor por su clave, escribimos el nombre del array y entre corchetes la clave. También puedes usar $tree[1], $tree[3], etc.
Para añadir un elemento al array, basta con usar una clave vacía:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[] = 'Otro elemento'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Esto generará:
Array ( [1] => 4 [2] => Hello World [3] => 1 [4] => Otro elemento )
Como ves, al dejar la clave vacía, PHP agrega el siguiente índice disponible. Pero también podemos definir manualmente una clave:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[6] = 'Otro elemento'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Así tendremos claves 1, 2, 3 y 6. No existen las claves 4 y 5. Si en un array ves claves como 103 y 105, no significa que exista la 104. Puedes comprobarlo con:
if(empty($tree[104])){ }
Si usas una clave ya existente, sobrescribirás su valor:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[3] = 'Otro valor'; print '<pre>'; print_r($tree); print '</pre>'; ?>
No se crea un nuevo elemento, pero el valor de la clave 3 será reemplazado.
También podemos usar texto como clave:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 'key3' => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
En ese caso, escribimos la clave entre comillas. Para acceder a ese valor:
print $tree['key3'];
Creo que los arrays están bastante claros… por ahora. Porque ahora vamos a ver los arrays multidimensionales.
Arrays multidimensionales en PHP
Como indica su nombre, los arrays multidimensionales tienen varias dimensiones. Un buen ejemplo es la tabla de multiplicar, donde hay dos números y un resultado dependiente de ambos.
<?php $multi = array(); $multi[1][1] = 1; $multi[1][2] = 2; $multi[1][3] = 3; $multi[2][1] = 2; $multi[2][2] = 4; $multi[2][3] = 6; $multi[3][1] = 3; $multi[3][2] = 6; $multi[3][3] = 9; print '<pre>'; print_r($multi); print '</pre>'; ?>
En un array unidimensional usamos una clave, en un array bidimensional usamos dos. En uno tridimensional usaríamos tres, etc. El orden de las claves importa: $multi[1][3] y $multi[3][1] son diferentes.
<?php $multi = array(); $multi[1][3] = 3; $multi[3][1] = 'Hello, World!'; print '<pre>'; print_r($multi); print '</pre>'; ?>
También podemos definirlos todos de una vez:
<?php $multi = array( 1 => array( 1 => 1, 2 => 2, 3 => 3, ), 2 => array( 1 => 2, 2 => 4, 3 => 6, ), 3 => array( 1 => 3, 2 => 6, 3 => 9, ), ); print '<pre>'; print_r($multi); print '</pre>'; ?>
Si más adelante tengo nuevos ejemplos sobre arrays, los añadiré. Por ahora, pasemos a la siguiente lección.