Resumen: Procesamiento de datos
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 45 de 68.
Desafío
FácilRecibirás tres entradas: una lista de nombres de empleados separados por comas, una lista de sus correspondientes horas de trabajo de la semana separadas por comas y un umbral de horas mínimas. La primera entrada contiene nombres en el formato Alice,Bob,Charlie,Diana,Eve, la segunda entrada contiene las horas como números en el formato 45,32,50,28,40, y la tercera entrada es el umbral de horas mínimas como un número (ejemplo: 35).
Lee las tres entradas y conviértelas en los arreglos apropiados. Crea un arreglo asociativo combinado donde los nombres de los empleados sean las llaves y sus horas de trabajo sean los valores. Luego, realiza las siguientes operaciones utilizando funciones de arreglo de orden superior:
- Usa
array_filter()con una función de callback personalizada para mantener solo a los empleados que trabajaron en o por encima del umbral de horas mínimas. - Usa
array_map()con una función de callback personalizada para calcular el pago por horas extras de los empleados filtrados (las horas extras son cualquier hora por encima de 40, pagadas a 1.5 veces la tarifa de $25 por hora para las horas regulares). - Usa
array_reduce()con una función de callback personalizada para calcular el pago total por horas extras de todos los empleados filtrados.
Imprime los resultados en el siguiente formato:
- Primero, imprime el nombre de cada empleado calificado y su pago por horas extras en líneas separadas en el formato
Name: $Amount(redondeado a 2 decimales). - Finalmente, imprime el pago total por horas extras en el formato
Total: $Amount(redondeado a 2 decimales).
Detalles del cálculo:
- Horas regulares (hasta 40): $25 por hora
- Horas extras (más de 40): $37.50 por hora (tarifa de 1.5x)
- Si un empleado trabajó 40 horas o menos, su pago por horas extras es $0.00
Formato de entrada:
- Primera línea: Nombres de empleados separados por comas (ejemplo:
Alice,Bob,Charlie,Diana,Eve) - Segunda línea: Horas de trabajo separadas por comas como números (ejemplo:
45,32,50,28,40) - Tercera línea: Umbral de horas mínimas como un número (ejemplo:
35)
Salida esperada: Cada empleado calificado con su pago por horas extras en líneas separadas, seguido por el pago total por horas extras, todos los montos formateados a 2 decimales.
Pruébalo tú mismo
<?php
// Leer entradas
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Convertir horas a enteros
$hours = array_map('intval', $hours);
// Crear un array asociativo combinando nombres y horas
$employees = array_combine($names, $hours);
// TODO: Escribe tu código a continuación
// 1. Usa array_filter() para mantener a los empleados que trabajaron el mínimo de horas o más
// 2. Usa array_map() para calcular el pago de horas extras para los empleados filtrados
// 3. Usa array_reduce() para calcular el pago total de horas extras
// Mostrar los resultados
// Imprimir el pago de horas extras de cada empleado calificado
// Imprimir el pago total de horas extras
?>Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación6Funciones de array de orden superior
Transformación con 'array_map''array_map' con funciones personalizadasFiltrado con 'array_filter''array_filter' con funciones personalizadasReducción con 'array_reduce'Recorrido con 'array_walk'Resumen: Procesamiento de datos