Recapitulação: Processamento de Dados
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 45 de 68.
Desafio
FácilVocê receberá três entradas: uma lista de nomes de funcionários separados por vírgula, uma lista correspondente de suas horas de trabalho na semana separadas por vírgula e um limite mínimo de horas. A primeira entrada contém nomes no formato Alice,Bob,Charlie,Diana,Eve, a segunda entrada contém horas como números no formato 45,32,50,28,40, e a terceira entrada é o limite mínimo de horas como um número (exemplo: 35).
Leia as três entradas e converta-as nos arrays apropriados. Crie um array associativo combinado onde os nomes dos funcionários são as chaves e suas horas de trabalho são os valores. Em seguida, realize as seguintes operações usando funções de array de alta ordem:
- Use
array_filter()com uma função de callback personalizada para manter apenas os funcionários que trabalharam no limite mínimo de horas ou acima dele - Use
array_map()com uma função de callback personalizada para calcular o pagamento de horas extras para os funcionários filtrados (horas extras são quaisquer horas acima de 40, pagas a 1,5x a taxa de $25 por hora para horas regulares) - Use
array_reduce()com uma função de callback personalizada para calcular o pagamento total de horas extras de todos os funcionários filtrados
Imprima os resultados no seguinte formato:
- Primeiro, imprima o nome de cada funcionário qualificado e seu pagamento de horas extras em linhas separadas no formato
Name: $Amount(arredondado para 2 casas decimais) - Por fim, imprima o pagamento total de horas extras no formato
Total: $Amount(arredondado para 2 casas decimais)
Detalhes do cálculo:
- Horas regulares (até 40): $25 por hora
- Horas extras (acima de 40): $37.50 por hora (taxa de 1,5x)
- Se um funcionário trabalhou 40 horas ou menos, seu pagamento de horas extras é $0.00
Formato de entrada:
- Primeira linha: Nomes de funcionários separados por vírgula (exemplo:
Alice,Bob,Charlie,Diana,Eve) - Segunda linha: Horas de trabalho separadas por vírgula como números (exemplo:
45,32,50,28,40) - Terceira linha: Limite mínimo de horas como um número (exemplo:
35)
Saída esperada: Cada funcionário qualificado com seu pagamento de horas extras em linhas separadas, seguido pelo pagamento total de horas extras, todos os valores formatados com 2 casas decimais
Experimente você mesmo
<?php
// Ler entradas
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Converter horas para inteiros
$hours = array_map('intval', $hours);
// Criar array associativo combinando nomes e horas
$employees = array_combine($names, $hours);
// TODO: Escreva seu código abaixo
// 1. Use array_filter() para manter funcionários que trabalharam o mínimo de horas ou mais
// 2. Use array_map() para calcular o pagamento de horas extras para os funcionários filtrados
// 3. Use array_reduce() para calcular o pagamento total de horas extras
// Exibir os resultados
// Imprimir o pagamento de horas extras de cada funcionário qualificado
// Imprimir o pagamento total de horas extras
?>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 Dados