array_map
(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplica la retrollamada especificada a los elementos de cada array
Descripción
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 proporcionados
a array_map().
Parámetros
-
callback -
Función de retrollamada a ejecutar para cada elemento de cada array.
-
array1 -
Un array a recorrer con la función
callback. -
... -
Lista variable de argumentos de tipo array a recorrer con la función
callback.
Valores devueltos
Devuelve un array que contiene todos los elementos de array1
después de aplicar la función callback a cada uno de ellos.
Ejemplos
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);
?>
Este ejemplo hace que $b contenga:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
Ejemplo #2 array_map() usando una función lambda (desde PHP 5.3.0)
<?php
$func = function($valor) {
return $valor * 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 mostrar_en_español($n, $m)
{
return("El número $n se llama $m en español");
}
function correspondencia_en_español($n, $m)
{
return(array($n => $m));
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("mostrar_en_español", $a, $b);
print_r($c);
$d = array_map("correspondencia_en_español", $a , $b);
print_r($d);
?>
El resultado del ejemplo sería:
// salida de $c
Array
(
[0] => El número 1 se llama uno en español
[1] => El número 2 se llama dos en español
[2] => El número 3 se llama tres en español
[3] => El número 4 se llama cuatro en español
[4] => El número 5 se llama cinco en español
)
// salida 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 arrays, estos deberían ser de la misma longitud, ya que la retrollamada se aplica en paralelo a los elementos correspondientes. Si los arrays son de longitudes diferentes, los más cortos se extenderán 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, lo que se puede llevar a cabo usando NULL como el nombre de la
retrollamada.
Ejemplo #4 Crear 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 de tipo string, el array devuelto tendrá claves de tipo string si y solo si se proporciona exactamente un array. Si se pasa más de un argumento, el array devuelto siempre tendrá claves de tipo integer.
Ejemplo #5 array_map() - con claves de tipo string
<?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"
}
}
Ver también
- array_filter() - Filtra elementos de un array usando una función de devolución de llamada
- array_reduce() - Reduce iterativamente un array a un solo valor usando una función llamada de retorno
- array_walk() - Aplicar una función proporcionada por el usuario a cada miembro de un array
- información acerca de tipos de llamada de retorno