W3docs

Entendiendo los Arrays Asociativos en PHP

Aprende arrays asociativos en PHP: créalos con claves string, lee y actualiza valores, recórrelos con foreach, ordénalos y evita errores comunes.

Un array asociativo en PHP almacena valores bajo claves con nombre en lugar de posiciones numéricas. Donde un array indexado responde a "¿qué hay en la posición 2?", un array asociativo responde a "¿cuál es el valor de email?" — que es exactamente la forma en que modelas registros, configuración y búsquedas en código real.

Este capítulo cubre cómo crear arrays asociativos, leer y actualizar sus valores, recorrerlos, ordenarlos por clave o valor, y evitar los errores comunes que confunden a los principiantes.

¿Qué es un array asociativo?

Un array asociativo es un array cuyos elementos se acceden mediante una clave string (también llamada índice) en lugar de una posición entera. Cada clave debe ser única — asignar un valor a una clave que ya existe sobreescribe el valor anterior.

$user = [
    "name"  => "Alice",
    "email" => "[email protected]",
    "age"   => 30,
];

Internamente, PHP tiene un solo tipo de array. Un array "indexado" es simplemente un array asociativo cuyas claves resultan ser los enteros 0, 1, 2, …. Por eso puedes mezclar libremente claves string y enteras en el mismo array.

Creando un array asociativo

Hay dos formas equivalentes de construir uno. La sintaxis corta [] (PHP 5.4+) es la preferida en el código moderno; la función array() hace lo mismo.

// Short array syntax (recommended)
$fruits = ["apple" => "red", "banana" => "yellow", "grapes" => "green"];

// Long syntax — identical result
$fruits = array("apple" => "red", "banana" => "yellow", "grapes" => "green");

También puedes añadir claves de una en una, lo que resulta útil al construir un array en un bucle:

$prices = [];
$prices["coffee"] = 2.5;
$prices["tea"]    = 2.0;

El orden en que asignas las claves se conserva — los arrays de PHP recuerdan el orden de inserción, por lo que al iterar más adelante obtienes coffee antes que tea.

Accediendo a los valores

Lee un valor con su clave entre corchetes:

$fruits = ["apple" => "red", "banana" => "yellow"];
echo $fruits["apple"]; // red

Si la clave no existe, PHP emite una advertencia y devuelve null. Para leer de forma segura, comprueba primero con array_key_exists(), o utiliza el operador de fusión null ?? para proporcionar un valor por defecto:

$color = $fruits["mango"] ?? "unknown";
echo $color; // unknown — no warning

Añadiendo y modificando valores

Asigna con una clave para actualizar un elemento existente o añadir uno nuevo:

$fruits = ["apple" => "red"];

$fruits["apple"]  = "green"; // modify existing key
$fruits["cherry"] = "dark red"; // add a new key

print_r($fruits);
// Array ( [apple] => green [cherry] => dark red )

Elimina un elemento con unset():

unset($fruits["apple"]);

Recorriendo un array asociativo

Un bucle for normal no funciona aquí porque no hay índices numéricos secuenciales. Usa foreach con la forma key => value para recorrer tanto claves como valores:

$user = ["name" => "Alice", "email" => "[email protected]", "age" => 30];

foreach ($user as $field => $value) {
    echo "$field: $value\n";
}
// name: Alice
// email: [email protected]
// age: 30

Ordenando arrays asociativos

Como las claves tienen significado, debes ordenar con funciones que preserven la asociación clave/valorsort() descartaría las claves. Usa:

  • ksort() / krsort() — ordenar por clave, ascendente / descendente
  • asort() / arsort() — ordenar por valor, ascendente / descendente
$scores = ["Bob" => 75, "Alice" => 90, "Carol" => 82];

arsort($scores); // sort by value, highest first

foreach ($scores as $name => $score) {
    echo "$name: $score\n";
}
// Alice: 90
// Carol: 82
// Bob: 75

Consulta Ordenando Arrays en PHP para ver el conjunto completo de funciones de ordenación.

Errores comunes

  • Reutilizar una clave sobreescribe silenciosamente. ["a" => 1, "a" => 2] resulta en ["a" => 2] — sin error, el primer valor se pierde.
  • Las claves string numéricas se convierten en enteros. ["10" => "x"] se almacena bajo la clave entera 10. $arr["10"] y $arr[10] acceden al mismo elemento.
  • Las claves true/false/null se convierten. Una clave true se convierte en 1, false y null se convierten en 0 y "". Utiliza preferiblemente string simples y enteros como claves.
  • No dependas de for ($i = 0; …). Usa foreach, array_keys() o array_values() para iterar cuando las claves no sean 0..n.

Conclusión

Los arrays asociativos te permiten almacenar datos bajo claves string únicas y significativas — ideal para registros, configuraciones y tablas de búsqueda. Lee con $arr["key"] (protege las claves ausentes con ??), actualiza o añade mediante asignación, elimina con unset(), itera con foreach y ordena con las funciones que preservan la asociación clave/valor como ksort() y asort().

Para profundizar, explora los arrays indexados, los arrays multidimensionales (arrays de arrays asociativos) y array_keys() para extraer todas las claves de una vez.

Práctica

Práctica
¿Qué es verdadero sobre los arrays asociativos en PHP?
¿Qué es verdadero sobre los arrays asociativos en PHP?
Was this page helpful?