PHP array_mapa

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 foreachloop 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 foreachitera sobre os elementos do $lengthsarray, calcula a área de cada quadrado e adiciona o resultado ao $areasarray.

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 $lengthsarray. 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 ) : arrayLinguagem 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 ) : arrayLinguagem 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, $usernamee $emaile uma lista de Userobjetos:

<?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 $usersarray:

<?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 Squareclasse que possui o area()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 $lengthsmatriz usando o método estático Square::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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *