La función array_map() nos permite aplicar una función llamada de devolución, con la que vamos a utilizar o transformar los datos de uno o varios arreglos y convertirlos en un arreglo nuevo.
Veamos la sintaxis de acuerdo a la documentación de PHP
array_map(callable $callback, array $array1, array $... = ?): array
La función de devolución o callback, va a utilizar los datos de cada arreglo que se le va a pasar a la función, por lo tanto, los parametros que la función recibe deben de conicidir con el número de arreglos proporcionados por array_map()
callback: función de retrollamada a ejecutar para cada elemento del array
array1: Es el array que se va a recorrer con la función (callback)
… : lista variable de arrays que se deben de recorrer con la función (callback)
Veamos unos ejemplos
con un arreglo:
function agregaTexto($nombre){
$textoAgregado = "Me llamo: ".$nombre;
return $textoAgregado;
}
// escribimos el primer arreglo
$arregloInicio = ['Cecilia', 'Juan', 'Mary', 'Luis'];
// utlizamos el método array_map y lo guardamos en un nuevo arreglo
$arregloFinal = array_map("agregaTexto", $arregloInicio);
array(4) { [0]=> string(17) "Me llamo: Cecilia" [1]=> string(14) "Me llamo: Juan" [2]=> string(14) "Me llamo: Mary" [3]=> string(14) "Me llamo: Luis" }
Ejemplo con varios arreglos:
function suma_de_dos_numeros($num_uno, $num_dos){
return $num_uno + $num_dos;
}
$arrayPrimerosNumeros = [10, 15, 30, 40];
$arraySegundosNumeros = [20, 5, 2, 60];
$arrayDeSuma = array_map("suma_de_dos_numeros", $arrayPrimerosNumeros, $arraySegundosNumeros);
array(4) { [0]=> int(30) [1]=> int(20) [2]=> int(32) [3]=> int(100) }
Un uso interesante de esta función es la construcción de un array de arrays, lo que se puede llevar a cabo usando null
como el nombre de la retrollamada.
$coche = ['vw', 'renault', 'ford'];
$color = ['azul', 'gris', 'negro'];
$año = ['modelo 2020', 'modelo 2019', 'modelo 2022'];
$arregloDeArreglos = array_map(null, $coche, $color, $año);
array(3) { [0]=> array(3) { [0]=> string(2) "vw" [1]=> string(4) "azul" [2]=> string(11) "modelo 2020" } [1]=> array(3) { [0]=> string(7) "renault" [1]=> string(4) "gris" [2]=> string(11) "modelo 2019" } [2]=> array(3) { [0]=> string(4) "ford" [1]=> string(5) "negro" [2]=> string(11) "modelo 2022" } }