Arrays en PHP

Un array es una variable que guarda múltiples valores en una sola estructura. Son fundamentales en PHP — casi todo en el lenguaje gira en torno a ellos.

¿Qué es un Array?

Hasta ahora cada variable guardaba un solo valor: $nombre = "Ana". Un array guarda muchos valores bajo un mismo nombre, y podés acceder a cada uno por su posición o por una clave.

// Sin array — incómodo y no escala
$fruta1 = "manzana";
$fruta2 = "naranja";
$fruta3 = "uva";

// Con array — limpio y flexible
$frutas = ["manzana", "naranja", "uva"];

echo $frutas[0];  // manzana
echo $frutas[1];  // naranja
echo $frutas[2];  // uva
Los índices empiezan en 0

El primer elemento de un array tiene índice 0, el segundo 1, y así. Es una convención universal en programación que al principio puede resultar rara pero rápidamente se vuelve natural.

Probá el Ejemplo 1: Arrays básicos

Arrays indexados

El tipo más simple: los valores se ordenan automáticamente con índices numéricos empezando desde 0. Son ideales para listas de cosas del mismo tipo.

$colores = ["rojo", "verde", "azul"];

// Acceder por índice
echo $colores[0];   // rojo
echo $colores[2];   // azul

// Agregar un elemento al final
$colores[] = "amarillo";

// Modificar un elemento
$colores[0] = "naranja";

// Saber cuántos elementos hay
echo count($colores);   // 4

// El último índice siempre es count() - 1
echo $colores[count($colores) - 1];  // amarillo

Recorrer con foreach

foreach es la forma más clara de recorrer un array. En cada iteración, la variable que definís ($color) toma el valor del elemento actual:

$colores = ["rojo", "verde", "azul", "amarillo"];

foreach ($colores as $color) {
    echo $color . "<br>";
}

// Para obtener también el índice:
foreach ($colores as $indice => $color) {
    echo "$indice: $color <br>";
}
Probá el Ejemplo 2: Recorrer arrays

Arrays asociativos

En vez de índices numéricos, los arrays asociativos usan claves de texto para identificar cada valor. Son perfectos para representar un objeto con propiedades: una persona, un producto, una configuración.

$persona = [
    "nombre"   => "Ana García",
    "edad"     => 28,
    "ciudad"   => "Córdoba",
    "activo"   => true,
];

// Acceder por clave
echo $persona["nombre"];   // Ana García
echo $persona["edad"];     // 28

// Agregar o modificar
$persona["email"] = "ana@mail.com";
$persona["edad"]  = 29;

// Verificar si una clave existe
if (isset($persona["telefono"])) {
    echo $persona["telefono"];
} else {
    echo "No tiene teléfono";
}

Recorrer un array asociativo

$persona = ["nombre" => "Ana", "edad" => 28, "ciudad" => "Córdoba"];

foreach ($persona as $clave => $valor) {
    echo "$clave: $valor <br>";
}
// nombre: Ana
// edad: 28
// ciudad: Córdoba
Probá el Ejemplo 3: Arrays asociativos

Funciones esenciales de arrays

PHP tiene decenas de funciones para trabajar con arrays. Las más usadas:

Agregar y quitar elementos

$nums = [3, 1, 4, 1, 5];

array_push($nums, 9, 2);   // agrega al final → [3,1,4,1,5,9,2]
array_pop($nums);          // quita el último → devuelve 2
array_unshift($nums, 0);   // agrega al inicio → [0,3,1,4,1,5,9]
array_shift($nums);        // quita el primero → devuelve 0

Buscar y verificar

$frutas = ["manzana", "naranja", "uva"];

in_array("naranja", $frutas);      // true — está en el array
in_array("pera", $frutas);         // false — no está
array_search("uva", $frutas);      // 2 — devuelve el índice
array_key_exists("color", $data);  // para arrays asociativos

Ordenar

$nums   = [3, 1, 4, 1, 5, 9];
$frutas = ["uva", "manzana", "naranja"];

sort($nums);    // ordena ascendente: [1, 1, 3, 4, 5, 9]
rsort($nums);   // ordena descendente: [9, 5, 4, 3, 1, 1]
sort($frutas);  // ordena alfabético: ["manzana", "naranja", "uva"]

// Para arrays asociativos (preserva las claves)
asort($data);   // ordena por valor
ksort($data);   // ordena por clave

Otras funciones útiles

count()

count($arr)

Cantidad de elementos

array_merge()

array_merge($a, $b)

Une dos arrays en uno

array_slice()

array_slice($arr, 1, 3)

Extrae una porción

array_unique()

array_unique($arr)

Elimina duplicados

implode()

implode(", ", $arr)

Une elementos en un string

explode()

explode(",", $str)

Divide un string en array

array_map()

array_map($fn, $arr)

Aplica una función a cada elemento

array_filter()

array_filter($arr, $fn)

Filtra elementos según condición

Arrays multidimensionales

Un array puede contener otros arrays como elementos. Esto permite representar estructuras de datos más complejas, como una tabla o una lista de objetos.

$productos = [
    ["nombre" => "Laptop",  "precio" => 1200, "stock" => 5],
    ["nombre" => "Mouse",   "precio" => 25,   "stock" => 30],
    ["nombre" => "Teclado", "precio" => 75,   "stock" => 20],
];

// Acceder a un dato específico: array[fila][clave]
echo $productos[0]["nombre"];   // Laptop
echo $productos[1]["precio"];   // 25

// Recorrer la lista completa
foreach ($productos as $producto) {
    echo $producto["nombre"] . ": $" . $producto["precio"] . "<br>";
}
Arrays de arrays — el patrón más común

Este patrón de "array de arrays asociativos" es exactamente lo que devuelve PHP cuando consultás una base de datos con PDO: cada fila es un array asociativo, y todas las filas forman un array. Entender esto bien es clave para trabajar con bases de datos desde PHP.

Ejemplo Completo

Carrito de compras usando arrays:

<?php
$carrito = [
    ["nombre" => "Laptop",   "precio" => 1200, "cantidad" => 1],
    ["nombre" => "Mouse",    "precio" => 25,   "cantidad" => 2],
    ["nombre" => "Teclado",  "precio" => 75,   "cantidad" => 1],
];

$total = 0;

echo "<h3>Tu carrito</h3>";
foreach ($carrito as $item) {
    $subtotal = $item["precio"] * $item["cantidad"];
    $total   += $subtotal;
    echo $item["nombre"] . " x" . $item["cantidad"];
    echo " = $" . number_format($subtotal, 2) . "<br>";
}

echo "<strong>Total: $" . number_format($total, 2) . "</strong>";
?>
Probá el Ejemplo 4: Carrito de compras

Buenas Prácticas

  • Usá foreach para recorrer — es más claro que un for con índices cuando no necesitás el número de la iteración
  • isset() antes de acceder a una clave — evita errores si la clave puede no existir en el array
  • Arrays asociativos para datos con nombre — $persona["nombre"] es mucho más claro que $persona[0]
  • Arrays indexados para listas homogéneas — una lista de frutas, de precios, de IDs
  • No uses list() o extract() en código nuevo — son funciones antiguas que pueden causar confusión