Las funciones de arrays permiten transformar, filtrar y combinar colecciones de datos sin repetir la misma lógica manualmente.
Hasta ahora, si querías modificar una lista de números, seguramente hacías un bucle foreach, creabas una variable vacía fuera y la ibas rellenando.
Eso es programación “Imperativa” (le dices al ordenador cómo hacer las cosas). Hoy vamos a ver la programación “Declarativa” (le dices al ordenador qué quieres conseguir).
Tenemos tres herramientas principales que cubren el 90% de los casos de uso con arrays.
array_map: el transformador
Misión: Tienes una lista de cosas y quieres transformar cada una de ellas en otra cosa, manteniendo la misma cantidad de elementos.
Ejemplo: Tienes precios sin IVA y quieres calcular el total de cada uno.
$precios = [10, 20, 50];
// Estilo moderno con Arrow Functions (fn)
$preciosConIVA = array_map(fn($p) => $p * 1.21, $precios);
// Resultado: [12.1, 24.2, 60.5]Fíjate en la limpieza. Sin bucles, sin variables temporales. Una línea.
Ojo al orden: En array_map, primero va la función y luego el array.
array_filter: el filtro
Misión: Tienes una lista y quieres quedarte solo con los que cumplan una condición.
Ejemplo: Tienes una lista de usuarios y quieres solo los mayores de edad.
$edades = [15, 18, 25, 12, 40];
$mayores = array_filter($edades, fn($edad) => $edad >= 18);
// Valores conservados: [1 => 18, 2 => 25, 4 => 40]¡Cuidado con los índices!
array_filter preserva los índices originales. El resultado anterior podría ser [1 => 18, 2 => 25, 4 => 40]. Si quieres reindexar el array (que vuelva a ser 0, 1, 2…), envuélvelo en array_values().
array_reduce: el acumulador
Misión: Tienes una lista de cosas y quieres reducirlas a un único valor final.
Ejemplo: Sumar el total de un carrito de la compra.
Funciona con una variable llamada “acumulador” (o carry) que va arrastrando el resultado vuelta tras vuelta.
$carrito = [10, 20, 30];
// (Acumulador, Item actual)
$total = array_reduce($carrito, fn($acc, $item) => $acc + $item, 0);
// Resultado: 60El 0 del final es el valor inicial del acumulador.
Ojo al orden: A diferencia de map, en filter y reduce primero va el array y luego la función. Sí, PHP es famoso por esta inconsistencia 🙅
Desestructuración de arrays (array destructuring)
La desestructuración resulta útil cuando tienes un array con coordenadas [x, y] y quieres pasarlas a variables sueltas $x e $y.
La forma antigua (fea):
$punto = [10, 20];
$x = $punto[0];
$y = $punto[1];La forma moderna (Desestructuración):
Usamos los corchetes [] a la izquierda del igual para “desempaquetar” el array.
$punto = [10, 20];
[$x, $y] = $punto; // ¡Listo!
// Ahora $x vale 10, $y vale 20Desestructuración en arrays asociativos
También funciona con claves, lo cual es brutal para trabajar con APIs o configuraciones.
$libro = [
'titulo' => 'El Quijote',
'autor' => 'Cervantes',
'year' => 1605
];
// Quiero sacar solo el título y el año a variables
['titulo' => $miTitulo, 'year' => $miYear] = $libro;
echo $miTitulo; // "El Quijote"El truco del “swap” (intercambio)
Una pregunta clásica de entrevista: “¿Cómo intercambias el valor de dos variables sin usar una tercera variable temporal?”. En PHP moderno es trivial gracias a la desestructuración:
$a = 1;
$b = 2;
[$b, $a] = [$a, $b];
// Ahora $a es 2 y $b es 1