php-funciones-para-trabajar-con-arrays-en-php

Funciones para trabajar con arrays en PHP

  • 3 min

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]
Copied!

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]
Copied!

¡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: 60
Copied!

El 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];
Copied!

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 20
Copied!

Desestructuració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"
Copied!

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
Copied!