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"]; // redSi 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 warningAñ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: 30Ordenando arrays asociativos
Como las claves tienen significado, debes ordenar con funciones que preserven la asociación clave/valor — sort() descartaría las claves. Usa:
ksort()/krsort()— ordenar por clave, ascendente / descendenteasort()/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: 75Consulta 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 entera10.$arr["10"]y$arr[10]acceden al mismo elemento. - Las claves
true/false/nullse convierten. Una clavetruese convierte en1,falseynullse convierten en0y"". Utiliza preferiblemente string simples y enteros como claves. - No dependas de
for ($i = 0; …). Usaforeach,array_keys()oarray_values()para iterar cuando las claves no sean0..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.