Função Array Map do PHP: Um Guia Completo
A função array_map em PHP é uma ferramenta essencial para transformar arrays de dados, aplicando um callback a cada elemento e retornando um novo array.
A função array_map em PHP é uma ferramenta essencial para transformar arrays de dados. Ela permite que os desenvolvedores apliquem uma função de callback a cada elemento de um array e retornem um novo array com os resultados. Essa é uma técnica versátil e poderosa para processar dados em PHP, podendo ser utilizada em uma ampla variedade de aplicações.
Como funciona o array_map?
A sintaxe básica da função array_map é a seguinte:
Sintaxe da função array_map em PHP
array_map(callback, array1, array2, ...);Aqui, o argumento callback é a função que será aplicada a cada elemento dos arrays. Os demais argumentos são os arrays a serem processados. Por exemplo, considere o seguinte código:
Exemplo de uso da função array_map em PHP
Este código define uma função simples, square, que recebe um número e retorna seu quadrado. A função array_map é então usada para aplicar essa função a cada elemento do array $numbers. O resultado é um novo array, $squared, que contém os quadrados dos números originais.
Observação sobre o comprimento dos arrays: Quando múltiplos arrays são passados para array_map, o processamento continua até que o array mais longo seja esgotado. Se os arrays tiverem comprimentos diferentes, os elementos ausentes nos arrays menores são automaticamente tratados como null.
Observação sobre a sintaxe moderna: No PHP 7.4+, você pode usar arrow functions para callbacks concisos. Por exemplo: array_map(fn($n) => $n * $n, $numbers);
Exemplos práticos de array_map
A função array_map é extremamente versátil e pode ser usada em muitos contextos diferentes. Veja alguns exemplos para ter uma ideia do seu poder:
Transformando arrays de strings
PHP: Transformando arrays de strings com a função array_map
Neste exemplo, a função array_map é usada para converter um array de strings para maiúsculas. A função upper recebe uma string e retorna sua versão em maiúsculas. Quando essa função é aplicada a cada elemento do array $words, o resultado é um novo array com as versões em maiúsculas das palavras originais.
Combinando arrays com array_map
PHP: Combinando arrays com array_map
Neste exemplo, dois arrays, $a e $b, são combinados em um terceiro array, $c. A função sum recebe dois argumentos e retorna a soma deles. A função array_map é usada para aplicar essa função a cada par correspondente de elementos em $a e $b. O resultado é um novo array, $c, que contém as somas dos pares originais.
Compactando arrays com callback null
Se você passar null como callback, array_map compacta os arrays — cada elemento do resultado é um array com os valores correspondentes de cada array de entrada. Isso é útil para emparelhar dados relacionados sem precisar escrever uma função.
PHP: compactando arrays com array_map e callback null
<?php
$ids = [1, 2, 3];
$names = ['Alice', 'Bob', 'Carol'];
$pairs = array_map(null, $ids, $names);
print_r($pairs);
?>O resultado é [[1, 'Alice'], [2, 'Bob'], [3, 'Carol']] — um array interno por linha.
Armadilhas e pontos de atenção
- As chaves são preservadas apenas com um único array. Quando você passa um array,
array_mapmantém as chaves originais. Com dois ou mais arrays, o resultado é reindexado com chaves inteiras sequenciais, portanto quaisquer chaves string são perdidas. array_mapnão modifica o array original. Ele sempre retorna um novo array. Se quiser transformar um array no lugar, usearray_walk.- O callback deve ser chamável. Passe o nome de uma função como string (
'square'), uma função anônima, uma arrow function ou um array[$object, 'method']. Consulte funções de callback em PHP para a lista completa de formas aceitas.
Quando usar array_map em vez de outras funções de array
- Use
array_mappara transformar cada elemento em um novo valor (um elemento de entrada → um elemento de saída). - Use
array_filterquando quiser manter apenas os elementos que passam em um teste. - Use
array_reducequando quiser reduzir o array a um único valor, como uma soma ou uma string concatenada.
Conclusão
A função array_map em PHP é uma ferramenta incrivelmente poderosa para transformar arrays de dados. Seja para converter strings para maiúsculas, combinar arrays ou realizar algum outro tipo de cálculo, array_map é a ferramenta ideal para o trabalho. Com sua sintaxe flexível e a capacidade de trabalhar com múltiplos arrays ao mesmo tempo, ela é uma função indispensável para qualquer desenvolvedor PHP.