(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplica uma função em todos os elementos dos arrays dados
array_map() retorna um array contendo todos
os elementos de arr1
depois de aplicada
uma determinada função em cada um. O número de parâmetros que esta função
aceita deve coincidir com o número de arrays passados para a
array_map()
callback
Função callback para executar para cada elementos dos arrays.
arr1
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 arr1
depois de ter aplicado a função callback
para cada um.
Exemplo #1 Exemplo de array_map()
<?php
function cubo($n)
{
return $n*$n*$n;
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cubo", $a);
print_r($b);
?>
E programa acima faz com que $b tenha:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Exemplo #2 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 #3 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 ) )
Se o array do argumento contém chaves string, então 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 #4 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" } }