(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplica la llamada de retorno especificada a los elementos de cada array
array_map() devuelve un array que contiene todos los
elementos de array1
después de haber aplicado la
función callback
a cada uno de ellos.
El número de parámetros que la función callback
acepte debería coincidir con el número de arrays que son
pasados como argumentos a array_map().
callback
Función tipo llamada de retorno a ejecutar para cada elemento en cada array.
array1
Un array a recorrer con la función callback
.
array
Lista variable de argumentos tipo array a recorrer con la
función callback
.
Devuelve un array que contiene todos los elementos de array1
después de aplicar la función callback
a cada uno de ellos.
Ejemplo #1 Ejemplo de array_map()
<?php
function cube($n)
{
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
Esto hace que $b contenga:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Ejemplo #2 array_map() usando la una función lamba (desde PHP 5.3.0)
<?php
$func = function($value) {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Ejemplo #3 array_map() - usando más arrays
<?php
function show_Spanish($n, $m)
{
return("The number $n is called $m in Spanish");
}
function map_Spanish($n, $m)
{
return(array($n => $m));
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("show_Spanish", $a, $b);
print_r($c);
$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>
El resultado del ejemplo sería:
// printout of $c Array ( [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ) // printout of $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Usualmente, cuando se usan dos o más array, estos deberían ser de longitudes iguales ya que la llamada de retorno es aplicada en paralelo a los elementos correspondientes. Si los arrays son de longitudes diferentes, los más cortos serán extendidos con elementos vacíos para que coincidan con la logintud del más largo.
Un uso interesante de esta función es la construcción de un array de
arrays, que puede ser llevada a cabo usando NULL
como el nombre de la
llamada de retorno.
Ejemplo #4 Creando un array de arrays
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
El resultado del ejemplo sería:
Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) )
Si el argumento array contiene claves tipo cadena, entonces el array devuelto tendrá claves tipo cadena si y solo si es pasado exactamente un array. Si más de un argumento es pasado, entonces el array devuelto siempre tendrá claves tipo entero.
Ejemplo #5 array_map() - con claves tipo cadena
<?php
$arr = array("stringkey" => "value");
function cb1($a) {
return array ($a);
}
function cb2($a, $b) {
return array ($a, $b);
}
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb2", $arr, $arr));
var_dump(array_map(null, $arr));
var_dump(array_map(null, $arr, $arr));
?>
El resultado del ejemplo sería:
array(1) { ["stringkey"]=> array(1) { [0]=> string(5) "value" } } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } } array(1) { ["stringkey"]=> string(5) "value" } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } }