Zusammenfassung: Datenverarbeitung
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 45 von 68.
Aufgabe
EinfachSie erhalten drei Eingaben: eine durch Kommas getrennte Liste von Mitarbeiternamen, eine durch Kommas getrennte Liste der entsprechenden Arbeitsstunden für die Woche und einen Schwellenwert für die Mindeststundenzahl. Die erste Eingabe enthält Namen im Format Alice,Bob,Charlie,Diana,Eve, die zweite Eingabe enthält Stunden als Zahlen im Format 45,32,50,28,40 und die dritte Eingabe ist der Schwellenwert für die Mindeststundenzahl als Zahl (Beispiel: 35).
Lesen Sie alle drei Eingaben ein und konvertieren Sie diese in entsprechende Arrays. Erstellen Sie ein kombiniertes assoziatives Array, in dem die Mitarbeiternamen die Schlüssel und ihre Arbeitsstunden die Werte sind. Führen Sie dann die folgenden Operationen unter Verwendung von Array-Funktionen höherer Ordnung aus:
- Verwenden Sie
array_filter()mit einer benutzerdefinierten Callback-Funktion, um nur die Mitarbeiter zu behalten, die mindestens den Schwellenwert für die Mindeststundenzahl erreicht haben. - Verwenden Sie
array_map()mit einer benutzerdefinierten Callback-Funktion, um die Überstundenvergütung für die gefilterten Mitarbeiter zu berechnen (Überstunden sind alle Stunden über 40, vergütet mit dem 1,5-fachen des Satzes von $25 pro Stunde für reguläre Stunden). - Verwenden Sie
array_reduce()mit einer benutzerdefinierten Callback-Funktion, um die gesamte Überstundenvergütung über alle gefilterten Mitarbeiter hinweg zu berechnen.
Geben Sie die Ergebnisse im folgenden Format aus:
- Geben Sie zuerst den Namen jedes qualifizierten Mitarbeiters und seine Überstundenvergütung in separaten Zeilen im Format
Name: $Amountaus (gerundet auf 2 Dezimalstellen). - Geben Sie abschließend die gesamte Überstundenvergütung im Format
Total: $Amountaus (gerundet auf 2 Dezimalstellen).
Berechnungsdetails:
- Reguläre Stunden (bis zu 40): $25 pro Stunde
- Überstunden (über 40): $37.50 pro Stunde (1,5-facher Satz)
- Wenn ein Mitarbeiter 40 Stunden oder weniger gearbeitet hat, beträgt seine Überstundenvergütung $0.00
Eingabeformat:
- Erste Zeile: Durch Kommas getrennte Mitarbeiternamen (Beispiel:
Alice,Bob,Charlie,Diana,Eve) - Zweite Zeile: Durch Kommas getrennte Arbeitsstunden als Zahlen (Beispiel:
45,32,50,28,40) - Dritte Zeile: Schwellenwert für die Mindeststundenzahl als Zahl (Beispiel:
35)
Erwartete Ausgabe: Jeder qualifizierte Mitarbeiter mit seiner Überstundenvergütung in separaten Zeilen, gefolgt von der gesamten Überstundenvergütung, wobei alle Beträge auf 2 Dezimalstellen formatiert sind.
Probier es selbst
<?php
// Eingaben lesen
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Stunden in Ganzzahlen umwandeln
$hours = array_map('intval', $hours);
// Assoziatives Array erstellen, das Namen und Stunden kombiniert
$employees = array_combine($names, $hours);
// TODO: Schreiben Sie Ihren Code unten
// 1. Verwenden Sie array_filter(), um Mitarbeiter zu behalten, die die Mindeststundenzahl oder mehr gearbeitet haben
// 2. Verwenden Sie array_map(), um die Überstundenvergütung für gefilterte Mitarbeiter zu berechnen
// 3. Verwenden Sie array_reduce(), um die gesamte Überstundenvergütung zu berechnen
// Ergebnisse ausgeben
// Die Überstundenvergütung jedes qualifizierten Mitarbeiters ausgeben
// Die gesamte Überstundenvergütung ausgeben
?>Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung6Array-Funktionen höherer Ordnung
Transformieren mit 'array_map''array_map' mit benutzerdefinierten FunktionenFiltern mit 'array_filter''array_filter' mit benutzerdefinierten FunktionenReduzieren mit 'array_reduce'Durchlaufen mit 'array_walk'Zusammenfassung: Datenverarbeitung