W3docs

Comprensión de los arrays en PHP

Los arrays de PHP son estructuras de datos para almacenar colecciones de variables, esenciales para gestionar grandes cantidades de información.

Un array de PHP es un mapa ordenado: una sola variable que almacena muchos valores, cada uno accesible mediante una clave. En lugar de declarar $fruit1, $fruit2, $fruit3, se mantiene un solo array $fruits y se accede a sus elementos por posición o por nombre. Los arrays son la estructura de datos más utilizada en PHP — los resultados de consultas, la entrada de formularios ($_POST), la configuración y JSON llegan todos como arrays.

Este capítulo cubre los tres tipos de arrays, cómo crearlos y leerlos, cómo agregar, eliminar y combinar elementos, cómo recorrerlos con bucles, y los errores comunes que suelen confundir a los programadores. Cada ejemplo ejecutable imprime su resultado para que pueda ver exactamente lo que produce PHP.

Tipos de arrays en PHP

PHP tiene tres formas de array y, internamente, todas son el mismo tipo: un mapa ordenado de pares clave/valor:

  • Arrays indexados: usan claves enteras automáticas que comienzan en 0.
  • Arrays asociativos: usan claves de tipo string elegidas por el programador.
  • Arrays multidimensionales: almacenan otros arrays como valores, permitiendo construir tablas y estructuras anidadas.
// Indexed: keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];

// Associative: you pick the keys
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

// Multidimensional: values are themselves arrays
$basket = [
    ["name" => "apple",  "qty" => 4],
    ["name" => "banana", "qty" => 6],
];

Cada forma tiene su propio capítulo dedicado: arrays indexados, arrays asociativos y arrays multidimensionales.

Creación de arrays en PHP

Existen dos sintaxis equivalentes. La sintaxis corta con [] (PHP 5.4+) es la preferida en el código moderno; la función más antigua array() hace exactamente lo mismo.

// Short array syntax — recommended
$fruits = ["apple", "banana", "cherry"];

// Long syntax with the array() language construct
$fruits = array("apple", "banana", "cherry");

También se puede construir un array de forma incremental. Asignar a $arr[] agrega un elemento con la siguiente clave entera, y asignar a una clave con nombre crea o sobreescribe esa entrada:

$fruits = [];
$fruits[] = "apple";     // key 0
$fruits[] = "banana";    // key 1
$fruits["best"] = "fig"; // string key "best"

Acceso a los elementos de un array

Para leer un valor se usa [], pasando un índice entero para arrays indexados o una clave de tipo string para los asociativos.

<?php
$fruits = ["apple", "banana", "cherry"];
$colors = ["apple" => "red", "banana" => "yellow"];

echo $fruits[0];        // apple
echo "\n";
echo $colors["apple"];  // red
?>

Leer una clave que no existe genera una advertencia y devuelve null. Compruebe antes con isset() (verdadero solo cuando la clave existe y no es null) o con array_key_exists() (verdadero incluso cuando el valor almacenado es null), o proporcione un valor por defecto con el operador de fusión nula:

<?php
$colors = ["apple" => "red"];

$banana = $colors["banana"] ?? "unknown"; // no warning, returns "unknown"
echo $banana;
?>

Agregar y eliminar elementos

PHP incluye funciones dedicadas para modificar un array desde cualquier extremo:

  • array_push($arr, $value) — agrega al final (o simplemente use $arr[] = $value).
  • array_pop($arr) — elimina y devuelve el último elemento.
  • array_unshift($arr, $value) — agrega al principio.
  • array_shift($arr) — elimina y devuelve el primer elemento, reindexando el resto.
  • unset($arr[$key]) — elimina un elemento específico (esto deja un hueco en las claves enteras).
<?php
$fruits = ["apple", "banana", "cherry"];

array_push($fruits, "mango"); // ["apple","banana","cherry","mango"]
$last = array_pop($fruits);   // $last = "mango"
unset($fruits[1]);            // removes "banana", keys 0 and 2 remain

print_r($fruits);
?>

Salida:

Array
(
    [0] => apple
    [2] => cherry
)

Observe que falta [1]unset() no renumera las claves. Para compactar las claves a 0, 1, 2…, use array_values($fruits). Para más detalles consulte array_push y array_pop.

Recorrer arrays con bucles

foreach es la forma idiomática de recorrer un array; funciona tanto con arrays indexados como asociativos y proporciona tanto la clave como el valor.

<?php
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

foreach ($colors as $fruit => $color) {
    echo "$fruit is $color\n";
}
?>

Salida:

apple is red
banana is yellow
cherry is dark red

Consulte el capítulo sobre el bucle foreach y la descripción general de bucles en PHP para ver más patrones.

Combinar arrays

array_merge() combina dos o más arrays en uno nuevo. Tenga en cuenta cómo trata las claves: las claves enteras se renumeran, pero las claves de tipo string colisionan — el valor de un array posterior sobreescribe el de uno anterior con la misma clave string.

php— editable, runs on the server

Salida:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => mango
)

Si solo necesita concatenar arrays numerados, el operador de propagación es una alternativa concisa: $all = [...$fruits1, ...$fruits2];. Para combinar arrays con claves string donde debe prevalecer el primer valor, use el operador de unión + en su lugar. Más información en el capítulo array_merge.

Funciones auxiliares útiles

La biblioteca estándar de PHP tiene docenas de funciones para arrays. Un puñado de las que usará constantemente:

FunciónQué hace
count($arr)Número de elementos
in_array($v, $arr)Si un valor existe (detalles)
array_keys($arr)Todas las claves como un nuevo array (detalles)
array_values($arr)Todos los valores, reindexados desde 0
sort($arr)Ordena los valores en su lugar (ordenar arrays)
<?php
$fruits = ["apple", "banana", "cherry"];

echo count($fruits);                              // 3
echo "\n";
echo in_array("banana", $fruits) ? "yes" : "no";  // yes
?>

Errores comunes

  • Las claves son únicas. Asignar a una clave existente la sobreescribe en lugar de agregar una segunda entrada.
  • "1" y 1 colisionan. Las claves de tipo string numéricas se convierten a enteros, por lo que $a["1"] y $a[1] son la misma posición.
  • Los arrays se copian por valor. Pasar un array a una función le da a esa función una copia; el original no se modifica a menos que se pase por referencia (&$arr).
  • unset() deja huecos. Use array_values() después si necesita un índice limpio y contiguo.

Conclusión

Los arrays de PHP son la base para almacenar y organizar datos, desde una simple lista de valores hasta registros anidados. Domine las tres formas, las operaciones de creación/lectura/adición/eliminación, foreach y algunas funciones auxiliares, y podrá manejar la gran mayoría de las tareas de datos del mundo real en PHP. A partir de aquí, profundice en arrays indexados, arrays asociativos y ordenar arrays.

Práctica

Práctica
¿Cuáles son los diferentes tipos de arrays en PHP?
¿Cuáles son los diferentes tipos de arrays en PHP?
Was this page helpful?