(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()
callback
Funçã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" } }