Los arrays asociativos son como diccionarios. En lugar de usar números como índices (0, 1, 2...), usas nombres descriptivos (claves). Son perfectos para representar objetos del mundo real: personas, productos, configuraciones...
Usa pares clave => valor para crear un array asociativo.
<?php
// Forma básica: clave => valor
$persona = [
"nombre" => "Juan",
"edad" => 25,
"ciudad" => "Madrid",
"profesion" => "Desarrollador"
];
// Forma larga (también válida)
$producto = array(
"nombre" => "Laptop",
"precio" => 999.99,
"stock" => 15
);
?>
¿Cuándo usar arrays asociativos?
Usa la clave para acceder al valor, no el índice numérico.
<?php
$persona = [
"nombre" => "Ana",
"edad" => 28,
"ciudad" => "Barcelona"
];
// Acceder usando la clave
echo $persona["nombre"]; // Ana
echo $persona["edad"]; // 28
echo $persona["ciudad"]; // Barcelona
// Mostrar en HTML
echo "<p>Hola, soy " . $persona["nombre"] . " y tengo " . $persona["edad"] . " años</p>";
?>
Puedes cambiar valores existentes o agregar nuevas claves.
<?php
$persona = [
"nombre" => "Juan",
"edad" => 25
];
// Modificar un valor existente
$persona["edad"] = 26;
echo $persona["edad"]; // 26
// Agregar una nueva clave
$persona["email"] = "juan@ejemplo.com";
$persona["ciudad"] = "Madrid";
// Ahora el array tiene 4 elementos
var_dump($persona);
?>
foreach es la mejor forma de recorrer un array asociativo.
<?php
$persona = [
"nombre" => "Carlos",
"edad" => 30,
"ciudad" => "Valencia",
"profesion" => "Ingeniero"
];
// Recorrer con clave y valor
foreach ($persona as $clave => $valor) {
echo $clave . ": " . $valor . "<br>";
}
// Resultado:
// nombre: Carlos
// edad: 30
// ciudad: Valencia
// profesion: Ingeniero
?>
Usa array_key_exists() o isset() para verificar.
<?php
$persona = [
"nombre" => "María",
"edad" => 24
];
// Forma 1: array_key_exists()
if (array_key_exists("nombre", $persona)) {
echo "La clave 'nombre' existe";
}
// Forma 2: isset() - RECOMENDADO
if (isset($persona["email"])) {
echo $persona["email"];
} else {
echo "No hay email";
}
// Diferencia:
// array_key_exists(): Devuelve true incluso si el valor es null
// isset(): Devuelve false si el valor es null
?>
Usa unset() para eliminar una clave del array.
<?php
$persona = [
"nombre" => "Pedro",
"edad" => 35,
"ciudad" => "Sevilla"
];
// Eliminar una clave
unset($persona["ciudad"]);
// Ahora solo tiene nombre y edad
var_dump($persona);
// Eliminar todo el array
unset($persona);
?>
Funciones para extraer solo claves o solo valores.
<?php
$persona = [
"nombre" => "Laura",
"edad" => 27,
"ciudad" => "Bilbao"
];
// Obtener solo las claves
$claves = array_keys($persona);
var_dump($claves);
// Array ( => nombre => edad => ciudad )
// Obtener solo los valores
$valores = array_values($persona);
var_dump($valores);
// Array ( => Laura => 27 => Bilbao )
?>
PHP ofrece muchas funciones para trabajar con arrays asociativos.
Combina dos arrays asociativos.
$arr1 = ["nombre" => "Juan"];
$arr2 = ["edad" => 25];
$resultado = array_merge($arr1, $arr2);
// [nombre => Juan, edad => 25]
Busca un valor y devuelve su clave.
$persona = ["nombre" => "Ana", "edad" => 28];
$clave = array_search(28, $persona);
echo $clave; // "edad"
Verifica si una clave existe.
$persona = ["nombre" => "Pedro"];
if (array_key_exists("nombre", $persona)) {
echo "Existe";
}
Intercambia claves y valores.
$arr = ["nombre" => "Juan", "edad" => 25];
$invertido = array_flip($arr);
// [Juan => nombre, 25 => edad]
Filtra elementos basado en una condición.
$arr = ["a" => 1, "b" => 2, "c" => 3];
$filtrado = array_filter($arr, function($v) {
return $v > 1;
});
// [b => 2, c => 3]
Cuenta cuántos elementos hay.
$persona = ["nombre" => "Ana", "edad" => 28];
echo count($persona); // 2
Arrays dentro de arrays. Perfecto para datos complejos.
<?php
// Array de estudiantes
$estudiantes = [
"est1" => [
"nombre" => "Juan",
"edad" => 20,
"notas" => [8, 9, 7]
],
"est2" => [
"nombre" => "Ana",
"edad" => 22,
"notas" => [9, 9, 8]
]
];
// Acceder a elementos anidados
echo $estudiantes["est1"] ["nombre"]; // Juan
echo $estudiantes["est1"] ["notas"] [0]; // 8
// Recorrer
foreach ($estudiantes as $id => $estudiante) {
echo $estudiante["nombre"] . ": " . $estudiante["edad"] . "<br>";
}
?>
Los arrays asociativos son perfectos para procesar datos de formularios.
<!-- Formulario HTML -->
<form method="POST">
<input type="text" name="nombre">
<input type="email" name="email">
<input type="submit">
</form>
<?php
// Procesar formulario
if (isset($_POST["nombre"])) {
$datos = [
"nombre" => $_POST["nombre"],
"email" => $_POST["email"]
];
echo "Datos recibidos: ";
var_dump($datos);
}
?>
Crea un archivo asociativos.php con un servidor local:
foreach mostrando clave y valor.isset() para verificar si existe la clave "email".array_keys() para obtener todas las claves.array_values() para obtener todos los valores.