MÓDULO 1: BACKEND

Arrays Asociativos

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...


1. Crear un Array Asociativo

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?

  • ✅ Para representar objetos (personas, productos, etc.).
  • ✅ Para datos de formularios.
  • ✅ Para configuraciones.
  • ✅ Para datos de bases de datos.
  • ❌ NO para listas simples (usa arrays indexados).

2. Acceder a Elementos

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>";
?>

3. Modificar y Agregar Elementos

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);
?>

4. Recorrer Arrays Asociativos

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
?>

5. Verificar si una Clave Existe

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
?>

6. Eliminar Elementos

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);
?>

7. Obtener Claves y Valores

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 )
?>

8. Funciones Útiles para Arrays Asociativos

PHP ofrece muchas funciones para trabajar con arrays asociativos.

array_merge()

Combina dos arrays asociativos.

$arr1 = ["nombre" => "Juan"];
$arr2 = ["edad" => 25];
$resultado = array_merge($arr1, $arr2);
// [nombre => Juan, edad => 25]

array_search()

Busca un valor y devuelve su clave.

$persona = ["nombre" => "Ana", "edad" => 28];
$clave = array_search(28, $persona);
echo $clave; // "edad"

array_key_exists()

Verifica si una clave existe.

$persona = ["nombre" => "Pedro"];
if (array_key_exists("nombre", $persona)) {
  echo "Existe";
}

array_flip()

Intercambia claves y valores.

$arr = ["nombre" => "Juan", "edad" => 25];
$invertido = array_flip($arr);
// [Juan => nombre, 25 => edad]

array_filter()

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]

count()

Cuenta cuántos elementos hay.

$persona = ["nombre" => "Ana", "edad" => 28];
echo count($persona); // 2

9. Arrays Asociativos Anidados

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>";
  }
?>

10. Caso Práctico: Datos de Formulario

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);
  }
?>

🛠️ Tu Misión

Crea un archivo asociativos.php con un servidor local:

  1. Crea un array asociativo con tus datos personales (nombre, edad, ciudad, email, profesión).
  2. Accede a cada elemento e imprímelos en HTML.
  3. Recorre el array con foreach mostrando clave y valor.
  4. Modifica tu edad en el array.
  5. Agrega una nueva clave "teléfono" al array.
  6. Usa isset() para verificar si existe la clave "email".
  7. Usa array_keys() para obtener todas las claves.
  8. Usa array_values() para obtener todos los valores.
  9. Crea un array de 3 productos, cada uno con nombre, precio y stock.
  10. Recorre el array de productos y muestra cada uno en una tabla HTML.
  11. Bonus: Crea un array anidado con 3 personas, cada una con sus datos personales y un array de hobbies.