array_map
(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplica uma função em todos os elementos dos arrays dados
Descrição
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()
Example#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 )
Example#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.
Example#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 ) )
Veja também array_filter(), array_reduce() , array_walk(), create_function(), e informações sobre o tipo callback.