Menu
Coddy logo textTech

Récapitulatif : Traitement des données

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 45 sur 68.

challenge icon

Défi

Facile

Vous recevrez trois entrées : une liste de noms d'employés séparés par des virgules, une liste de leurs heures de travail correspondantes pour la semaine séparées par des virgules, et un seuil d'heures minimales. La première entrée contient les noms au format Alice,Bob,Charlie,Diana,Eve, la deuxième entrée contient les heures sous forme de nombres au format 45,32,50,28,40, et la troisième entrée est le seuil d'heures minimales sous forme de nombre (exemple : 35).

Lisez les trois entrées et convertissez-les en tableaux appropriés. Créez un tableau associatif combiné où les noms des employés sont les clés et leurs heures de travail sont les valeurs. Effectuez ensuite les opérations suivantes en utilisant des fonctions de tableau d'ordre supérieur :

  1. Utilisez array_filter() avec une fonction de rappel personnalisée pour ne conserver que les employés ayant travaillé au moins le seuil d'heures minimales
  2. Utilisez array_map() avec une fonction de rappel personnalisée pour calculer la rémunération des heures supplémentaires pour les employés filtrés (les heures supplémentaires sont toutes les heures au-delà de 40, payées à 1,5 fois le taux de $25 par heure pour les heures régulières)
  3. Utilisez array_reduce() avec une fonction de rappel personnalisée pour calculer le montant total des heures supplémentaires pour tous les employés filtrés

Affichez les résultats au format suivant :

  • Tout d'abord, affichez le nom de chaque employé qualifié et sa rémunération des heures supplémentaires sur des lignes séparées au format Name: $Amount (arrondi à 2 décimales)
  • Enfin, affichez le montant total des heures supplémentaires au format Total: $Amount (arrondi à 2 décimales)

Détails du calcul :

  • Heures régulières (jusqu'à 40) : $25 par heure
  • Heures supplémentaires (au-delà de 40) : $37.50 par heure (taux de 1,5x)
  • Si un employé a travaillé 40 heures ou moins, sa rémunération des heures supplémentaires est de $0.00

Format d'entrée :

  • Première ligne : Noms des employés séparés par des virgules (exemple : Alice,Bob,Charlie,Diana,Eve)
  • Deuxième ligne : Heures de travail séparées par des virgules sous forme de nombres (exemple : 45,32,50,28,40)
  • Troisième ligne : Seuil d'heures minimales sous forme de nombre (exemple : 35)

Sortie attendue : Chaque employé qualifié avec sa rémunération des heures supplémentaires sur des lignes séparées, suivie du montant total des heures supplémentaires, tous les montants étant formatés à 2 décimales

Essayez vous-même

<?php
// Lire les entrées
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// Convertir les heures en entiers
$hours = array_map('intval', $hours);

// Créer un tableau associatif combinant les noms et les heures
$employees = array_combine($names, $hours);

// TODO: Écrivez votre code ci-dessous
// 1. Utiliser array_filter() pour garder les employés ayant travaillé au moins le nombre d'heures minimum
// 2. Utiliser array_map() pour calculer la rémunération des heures supplémentaires pour les employés filtrés
// 3. Utiliser array_reduce() pour calculer le montant total des heures supplémentaires

// Afficher les résultats
// Afficher la rémunération des heures supplémentaires de chaque employé qualifié
// Afficher le montant total des heures supplémentaires

?>

Toutes les leçons de Logique & Flux