(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_map — Aplica uma função em todos os elementos dos arrays dados
array_map() retorna um array contendo todos
os elementos de array1 depois de aplicada
uma determinada função callback em cada um.
O número de parâmetros que a função callback
aceita deve coincidir com
o número de arrays passados para a função
array_map()
callbackFunção callback para executar para cada elementos dos arrays.
array1
Um array para percorrer chamando função callback.
array
Variável lista de argumentos array para percorrer chamando a função
callback.
Retorna um array contendo todos elementos de array1
depois de ter aplicado a função callback para cada um.
Exemplo #1 Exemplo da função 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);
?>
Faz com que $b tenha:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
Exemplo #2 Utilizando uma função lambda com a função array_map() (a partir do 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
)
Exemplo #3 array_map() - usando mais de um array
<?php
function mostrar_Espanhol($n, $m)
{
return "O número $n é chamado de $m na Espanha";
}
function map_Espanhol($n, $m)
{
return array($n => $m);
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("mostrar_Espanhol", $a, $b);
print_r($c);
$d = array_map("map_Espanhol", $a , $b);
print_r($d);
?>
O exemplo acima irá imprimir:
// Saída de $c
Array
(
[0] => O número 1 é chamado de uno na Espanha
[1] => O número 2 é chamado de dos na Espanha
[2] => O número 3 é chamado de tres na Espanha
[3] => O número 4 é chamado de cuatro na Espanha
[4] => O número 5 é chamado de cinco na Espanha
)
// Saída de $d
Array
(
[0] => Array
(
[1] => uno
)
[1] => Array
(
[2] => dos
)
[2] => Array
(
[3] => tres
)
[3] => Array
(
[4] => cuatro
)
[4] => Array
(
[5] => cinco
)
)
Normalmente quando se usa dois ou mais arrays, eles devem ter o mesmo tamanho porque a função callback é aplicada paralelamente nos elementos correpondentes. Se os arrays tem tamanhos diferentes, o menor array será extendido com elementos vazios.
Uma forma interessante de se usar esta função é na construção de um array de
arrays, o que pode ser facilmente feito usando NULL
como o nome da função callback.
Exemplo #4 Criando um array de arrays
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("um", "dois", "tres", "quatro", "cinco");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
O exemplo acima irá imprimir:
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
)
)
O array retornado conterá chaves string se e somente se exatamente um array é passado. Se mais que um argumento é passado, então o array retornado sempre terá chaves inteiras.
Exemplo #5 array_map() - com chaves 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));
?>
O exemplo acima irá imprimir:
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"
}
}