'array_filter' com Funções Personalizadas
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 42 de 68.
Embora o array_filter() sem um callback remova valores vazios, seu verdadeiro poder surge quando você fornece uma função de callback personalizada. Isso permite que você defina exatamente quais elementos devem ser mantidos com base em seus critérios específicos.
Para usar uma função personalizada com array_filter(), passe o nome da sua função como o segundo parâmetro. Sua função de callback deve aceitar um parâmetro (o elemento atual do array) e retornar true para manter o elemento ou false para excluí-lo.
<?php
function isEven($number) {
return $number % 2 === 0;
}
$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// Resultado: [2, 4, 6, 8]
?>Neste exemplo, a função isEven testa cada número usando o operador de módulo. Apenas números que retornam true (números pares) são incluídos no resultado filtrado. Esta abordagem oferece controle total sobre a lógica de filtragem, tornando a array_filter() incrivelmente versátil para tarefas de processamento de dados.
Desafio
FácilVocê receberá duas entradas: uma lista de preços de produtos separada por vírgulas e um limite de preço mínimo. A primeira entrada contém os preços como uma string no formato 15.99,45.00,8.50,120.00,22.75, e a segunda entrada é o limite de preço mínimo como um número (exemplo: 20).
Leia ambas as entradas, converta os preços separados por vírgulas em um array de números, crie uma função de callback personalizada que verifique se um preço é maior ou igual ao limite, use array_filter() com sua função personalizada para manter apenas os preços que atingem o limite e imprima cada preço filtrado em uma linha separada na ordem em que aparecem.
Sua função de callback personalizada deve aceitar um parâmetro (o preço) e retornar true se o preço for maior ou igual ao limite, ou false caso contrário.
Formato de entrada:
- Primeira linha: Preços de produtos separados por vírgulas (exemplo:
15.99,45.00,8.50,120.00,22.75) - Segunda linha: Limite de preço mínimo como um número (exemplo:
20)
Saída esperada: Cada preço que atinge ou excede o limite impresso em uma linha separada, mantendo a ordem original
Experimente você mesmo
<?php
// Ler a entrada
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));
// Converter preços separados por vírgula em um array
$prices = array_map('floatval', explode(',', $prices_input));
// TODO: Escreva seu código abaixo
// Crie uma função de callback personalizada que verifica se um preço é >= threshold
// Use array_filter() com sua função personalizada
// Imprima cada preço filtrado em uma linha separada
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard6Funções de Ordem Superior para Arrays
Transformando com 'array_map''array_map' com Funções PersonalizadasFiltrando com 'array_filter''array_filter' com Funções PersonalizadasReduzindo com 'array_reduce'Percorrendo com 'array_walk'Recapitulação: Processamento de DadosPratique por conta própria: Compilador de PHP online