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