Map Filter Reduce PHP: A Programação Funcional oferece uma abordagem poderosa e declarativa para manipular dados, tratando a transformação de dados como a aplicação de funções. No PHP, as funções nativas array_map, array_filter e array_reduce são as ferramentas primárias para aplicar esses conceitos, simplificando tarefas complexas em arrays.
O uso dessas funções resulta em um código mais legível, conciso e fácil de testar.
1. 🗺️ Função array_map: Transformando Elementos
A função array_map aplica uma função de callback a cada elemento de um array de entrada e retorna um novo array com os resultados transformados. O array original permanece inalterado.
Sintaxe
PHP
array_map(callable $callback, array $array)
Exemplo: Dobrando Valores
Ideal para transformar todos os elementos de um array seguindo uma regra específica (ex: conversão de moeda, alteração de strings).
PHP
<?php
$numeros = [1, 2, 3, 4, 5];
$dobros = array_map(function($numero) {
// A função de callback deve retornar o valor transformado
return $numero * 2;
}, $numeros);
print_r($dobros);
// Saída: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
?>
2. 🛡️ Função array_filter: Selecionando Elementos
A função array_filter itera sobre um array e retorna um novo array contendo apenas os elementos que satisfazem uma determinada condição.
Sintaxe
PHP
array_filter(array $array, callable $callback)
Exemplo: Filtrando Números Pares
A função de callback deve retornar true para manter o elemento, ou false para descartá-lo.
PHP
<?php
$numeros = [1, 2, 3, 4, 5];
$pares = array_filter($numeros, function($numero) {
// Retorna TRUE para manter o número, se for par
return $numero % 2 === 0;
});
print_r($pares);
// Saída: Array ( [1] => 2 [3] => 4 ) - Note que as chaves originais são preservadas
?>
Dica: O array_filter é frequentemente usado para remover valores “false” (como null, 0, false ou strings vazias) de um array, bastando omitir o callback: array_filter($array);.
3. 🎯 Função array_reduce: Reduzindo a um Valor Único
A função array_reduce aplica uma função de callback acumulativa a cada valor do array, eventualmente reduzindo-o a um único valor.
Sintaxe
PHP
array_reduce(array $array, callable $callback, mixed $initial = null)
O parâmetro $initial (valor inicial) é crucial, pois define o valor inicial do acumulador (ex: 0 para soma, 1 para produto).
Exemplo: Somando Valores
A função de callback recebe dois argumentos: o acumulador (resultado parcial) e o valor atual do array.
PHP
<?php
$numeros = [1, 2, 3, 4, 5];
$soma = array_reduce($numeros, function($acumulador, $numero) {
// A função deve retornar o novo valor do acumulador
return $acumulador + $numero;
}, 0); // O '0' é o valor inicial do acumulador
echo $soma; // Saída: 15
?>
4. 🧪 Exemplos Práticos Combinados
Essas funções são poderosas quando aplicadas a arrays associativos complexos.
A. Aumentando Preços (Map)
PHP
<?php
$produtos = [
['nome' => 'Camiseta', 'preco' => 20],
['nome' => 'Calça', 'preco' => 50],
];
$produtosComAumento = array_map(function($produto) {
$produto['preco'] *= 1.1; // Aumenta 10%
return $produto;
}, $produtos);
// $produtosComAumento agora contém os novos preços.
?>
B. Filtrando por Condição (Filter)
PHP
<?php
$usuarios = [
['nome' => 'João', 'idade' => 25],
['nome' => 'Maria', 'idade' => 17],
];
$adultos = array_filter($usuarios, function($usuario) {
return $usuario['idade'] >= 18;
});
// $adultos contém apenas o array do 'João'.
?>
C. Calculando Média (Reduce e Count)
PHP
<?php
$notas = [8, 7, 9, 10];
// 1. Usa array_reduce para somar todas as notas, começando do 0
$somaTotal = array_reduce($notas, function($soma, $nota) {
return $soma + $nota;
}, 0);
// 2. Calcula a média (Soma / Contagem)
$media = $somaTotal / count($notas);
echo "Média: " . $media; // Saída: Média: 8.5
?>
✅ Conclusão Map Filter Reduce PHP
Map Filter Reduce PHP: As funções array_map, array_filter e array_reduce são fundamentais para adotar o estilo de Programação Funcional em PHP. Elas permitem que a manipulação de arrays seja feita de maneira declarativa (“o que fazer”, em vez de “como fazer”), resultando em código mais limpo, menos propenso a erros de iteração manual (como em loops for tradicionais) e mais fácil de entender em projetos colaborativos.
Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:












