Un array en PHP guarda una lista de valores bajo claves. Créalo con corchetes, $fruits = ['apple', 'banana', 'cherry'];, y lee un elemento por su índice, $fruits[0]. Los índices empiezan en 0, y count($fruits) da el número de elementos.
Todo array de PHP es un mapa ordenado: cada valor está bajo una clave. Cuando no eliges las claves, PHP las numera 0, 1, 2... y obtienes un array indexado. Cuando las eliges tú (['name' => 'Ada']), obtienes un array asociativo. Los dos son el mismo tipo array.
Crear un array
Los corchetes son la sintaxis habitual. array() es la forma antigua y produce exactamente lo mismo. range() construye una lista de números o letras, y array_fill() repite un valor.
Un array de PHP puede contener a la vez valores de tipos distintos, incluidos otros arrays. Un array de arrays es un array multidimensional, la forma habitual de guardar filas de datos.
Obtener el primer y el último elemento
PHP no tiene índices negativos. $arr[-1] no significa "el último": busca una clave llamada -1 y, si no existe, PHP imprime Warning: Undefined array key -1. Usa array_key_first() y array_key_last(), que también funcionan cuando las claves no empiezan en 0.
end($queue) también devuelve el último valor, pero como efecto secundario mueve el puntero interno del array, así que la versión basada en claves es la opción más clara.
Imprimir un array
echo $arr no funciona: imprime la palabra Array y un warning. Elige la salida que encaje con lo que necesitas:
print_r($arr)para un volcado legible mientras depuras.var_dump($arr)para ver además el tipo y la longitud de cada valor.implode(', ', $arr)para convertir los valores en una cadena que mostrar.json_encode($arr)para enviar el array a JavaScript o a una API.
La página de print_r y var_dump explica las opciones de formato, incluido cómo imprimir un array dentro de HTML.
Recorrer un array
foreach es el bucle hecho para arrays: te da cada valor, y también la clave si la pides. Un bucle for con índice también sirve para arrays indexados cuyas claves van desde 0 sin huecos.
Los arrays se copian, no se comparten
Asignar un array a otra variable, o pasarlo a una función, da una copia. Cambiar la copia deja intacto el original. Añade & al parámetro cuando una función deba cambiar el array de quien la llama.
Funciones de arrays por tarea
PHP trae más de 70 funciones de arrays. Estas son las que más vas a usar, cada una con su propia página:
| Tarea | Función |
|---|---|
| Añadir al final | array_push() o $arr[] = |
| Número de elementos | count() |
| Comprobar si existe un valor | in_array() |
| Encontrar la clave de un valor | array_search() |
| Comprobar si existe una clave | array_key_exists() |
| Combinar arrays | array_merge() |
| Transformar cada valor | array_map() |
| Quedarse con algunos valores | array_filter() |
| Ordenar | sort(), usort() y compañía |
| Eliminar un elemento | unset(), array_splice() |
| Tomar una parte | array_slice() |
| Quitar duplicados | array_unique() |
| De cadena a array y al revés | explode(), implode() |
Claves que se fusionan sin avisar
Las claves de un array son enteros o cadenas, y PHP convierte algunas claves por ti. Una cadena que parece un número decimal entero, como "1", se convierte en el entero 1, así que $a["1"] y $a[1] son la misma posición. "01" y "1.5" se quedan como cadenas. Por eso un array construido con datos de un formulario o de un CSV puede acabar con menos elementos de los que esperabas.
Preguntas frecuentes
¿Cómo creo un array en PHP?
Usa corchetes: $colors = ['red', 'green', 'blue'];. Un array vacío es $items = [];. La sintaxis antigua array('red', 'green') hace lo mismo y sigue funcionando.
¿Cómo imprimo un array en PHP?
echo no puede imprimir un array (imprime la palabra Array y un warning). Usa print_r($arr) para un volcado legible, var_dump($arr) para ver también los tipos, o echo implode(', ', $arr) para imprimir los valores en una línea.
¿Cómo obtengo el último elemento de un array en PHP?
Usa $arr[array_key_last($arr)] (PHP 7.3+) o end($arr). PHP no tiene índices negativos: $arr[-1] busca una clave llamada -1, que normalmente no existe.
¿Los arrays de PHP se pasan por valor o por referencia?
Por valor. $b = $a; le da a $b su propia copia, así que cambiar $b no cambia $a. Para modificar el array de quien llama dentro de una función, declara el parámetro como referencia: function add(array &$list).
¿Cuál es la diferencia entre un array indexado y uno asociativo en PHP?
Son el mismo tipo. Un array indexado tiene claves enteras 0, 1, 2... que PHP asigna por ti; un array asociativo usa claves que eliges tú, normalmente cadenas como 'name'. Un mismo array puede incluso mezclar las dos.