array_map
é uma função do PHP que aplica uma função de callback a cada elemento de um ou mais arrays e retorna um novo array com os resultados.
Sintaxe
array_map(callback $callback, array $array1, array ...$arrays): array
Parâmetros
$callback
: Função de callback que será aplicada a cada elemento do array ou arrays. Pode ser uma função nomeada, uma função anônima ou até mesmonull
.$array1
: O array principal em que a função de callback será aplicada....$arrays
: Arrays adicionais, caso necessário. Se múltiplos arrays forem passados, a função de callback deve aceitar tantos parâmetros quanto o número de arrays, e cada elemento receberá um valor correspondente de cada array.
Como Funciona
Para cada elemento no array (ou elementos correspondentes em múltiplos arrays), array_map
aplica a função de callback e coleta os resultados em um novo array.
Exemplo 1: Uso Básico
Neste exemplo, array_map
é usado para elevar cada número ao quadrado:
$numeros = [1, 2, 3, 4];
$quadrados = array_map(function ($n) {
return $n * $n;
}, $numeros);
print_r($quadrados);
// Saída: [1, 4, 9, 16]
Exemplo 2: Usando array_map
com Múltiplos Arrays
Se múltiplos arrays forem passados, array_map
aplica a função a elementos correspondentes de cada array.
$numeros1 = [1, 2, 3];
$numeros2 = [4, 5, 6];
$soma = array_map(function ($a, $b) {
return $a + $b;
}, $numeros1, $numeros2);
print_r($soma);
// Saída: [5, 7, 9]
Exemplo 3: Criando Objetos a Partir de um Array
No exemplo anterior que você mencionou, array_map
foi usado para criar um objeto (stdClass
) para cada elemento de um array de dados:
$dados = [
['id' => 1, 'nome' => 'João'],
['id' => 2, 'nome' => 'Maria']
];
$objetos = array_map(function ($item) {
$obj = new \stdClass();
foreach ($item as $chave => $valor) {
$obj->$chave = $valor;
}
return $obj;
}, $dados);
print_r($objetos);
Isso produzirá um array de objetos com as propriedades id
e nome
, com base em cada elemento do array $dados
.
Quando Usar array_map
- Quando você precisa transformar cada elemento de um array com uma função.
- Quando deseja aplicar a mesma operação em vários arrays
Deixe um comentário