Resumo : neste tutorial você aprenderá como usar a array_map()
função PHP que cria um novo array cujos elementos são resultados da aplicação de um callback a cada elemento.
Introdução à função array_map() do PHP
Suponha que você tenha uma matriz que contém os comprimentos dos quadrados:
<?php
$lengths = [10, 20, 30];
Linguagem de código: HTML, XML ( xml )
Para calcular as áreas dos quadrados, você pode criar um foreach
loop assim:
<?php
$lengths = [10, 20, 30];
// calculate areas
$areas = [];
foreach ($lengths as $length) {
$areas[] = $length * $length;
}
print_r($areas);
Linguagem de código: HTML, XML ( xml )
Saída:
Array
(
[0] => 100
[1] => 400
[2] => 900
)
Linguagem de código: PHP ( php )
O foreach
itera sobre os elementos do $lengths
array, calcula a área de cada quadrado e adiciona o resultado ao $areas
array.
Alternativamente, você pode usar a array_map()
função que obtém o mesmo resultado:
<?php
$lengths = [10, 20, 30];
// calculate areas
$areas = array_map(function ($length) {
return $length * $length;
}, $lengths);
print_r($areas);
Linguagem de código: HTML, XML ( xml )
Neste exemplo, array_map()
aplica uma função anônima a cada elemento do $lengths
array. Retorna um novo array cujos elementos são os resultados da função anônima.
A partir do PHP 7.4, você pode usar uma função de seta em vez de uma função anônima como esta:
<?php
$lengths = [10, 20, 30];
// calculate areas
$areas = array_map(
fn ($length) => $length * $length,
$lengths
);
print_r($areas);
Linguagem de código: HTML, XML ( xml )
Sintaxe da função array_map() do PHP
O seguinte mostra a array_map()
sintaxe da função:
array_map ( callable|null $callback , array $array , array ...$arrays ) : array
Linguagem de código: PHP ( php )
O array_map()
possui os seguintes parâmetros:
$callback
– um callable para aplicar a cada elemento em cada array.$array
– é uma matriz de elementos aos quais a função de retorno de chamada se aplica.$arrays
– é uma lista variável de argumentos de array aos quais a função de retorno de chamada se aplica.
A array_map()
função retorna um novo array cujos elementos são o resultado da função de retorno de chamada.
Este tutorial se concentra na seguinte forma da array_map()
função:
array_map ( callable $callback , array $array ) : array
Linguagem de código: PHP ( php )
Exemplos de funções PHP array_map()
Vejamos mais alguns exemplos de uso da array_map()
função.
1) Usando array_map() do PHP com um array de objetos
O seguinte define uma classe que possui três propriedades: $id
, $username
e $email
e uma lista de User
objetos:
<?php
class User
{
public $id;
public $username;
public $email;
public function __construct(int $id, string $username, string $email)
{
$this->id = $id;
$this->username = $username;
$this->email = $email;
}
}
$users = [
new User(1, 'joe', '[email protected]'),
new User(2, 'john', '[email protected]'),
new User(3, 'jane', '[email protected]'),
];
Linguagem de código: HTML, XML ( xml )
O seguinte ilustra como usar a array_map()
função para obter uma lista de nomes de usuário do $users
array:
<?php
class User
{
public $id;
public $username;
public $email;
public function __construct(int $id, string $username, string $email)
{
$this->id = $id;
$this->username = $username;
$this->email = $email;
}
}
$users = [
new User(1, 'joe', '[email protected]'),
new User(2, 'john', '[email protected]'),
new User(3, 'jane', '[email protected]'),
];
$usernames = array_map(
fn ($user) => $user->username,
$users
);
print_r($usernames);
Linguagem de código: HTML, XML ( xml )
Saída:
Array
(
[0] => joe
[1] => john
[2] => jane
)
Linguagem de código: PHP ( php )
2) Usando um método estático como retorno de chamada
O argumento da função de retorno de chamada array_map()
pode ser um método público de uma classe. Por exemplo:
<?php
class Square
{
public static function area($length)
{
return $length * $length;
}
}
$lengths = [10, 20, 30];
$areas = array_map('Square::area', $lengths);
print_r($areas);
Linguagem de código: HTML, XML ( xml )
Como funciona.
- Primeiro, defina a
Square
classe que possui oarea()
método estático público. - Segundo, crie uma matriz que contenha os comprimentos dos três quadrados.
- Terceiro, calcule as áreas dos quadrados com base nos comprimentos da
$lengths
matriz usando o método estáticoSquare::area
.
Observe que a sintaxe para passar um método estático público para a array_map()
função é a seguinte:
'className::staticMethodName'
Linguagem de código: JavaScript ( javascript )
E o método estático público deve aceitar o elemento do array como argumento.
Resumo
- Use o método PHP
array_map()
para criar um novo array aplicando uma função de retorno de chamada a cada elemento de outro array.