Menu
CoddyTech

'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.

challenge icon

Desafio

Fácil

Você 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

?>
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de PHP online