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
array_map ( mixed callback, array arr1 [, array ...] )
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()
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); ?>
|
Resultará em:
// 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); ?>
|
|
A saída do programa acima seria:
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() e
array_walk().