Podsumowanie: przetwarzanie danych
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 45 z 68.
Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe: listę imion i nazwisk pracowników rozdzielonych przecinkami, listę odpowiadających im godzin pracy w tygodniu, również rozdzielonych przecinkami, oraz próg minimalnej liczby godzin. Pierwsze dane wejściowe zawierają imiona i nazwiska w formacie Alice,Bob,Charlie,Diana,Eve, drugie zawierają liczbę godzin w formacie 45,32,50,28,40, a trzecie to próg minimalnej liczby godzin w postaci liczby (na przykład: 35).
Wczytaj wszystkie trzy dane wejściowe i przekształć je w odpowiednie tablice. Utwórz połączoną tablicę asocjacyjną, w której imiona i nazwiska pracowników będą kluczami, a liczba przepracowanych przez nich godzin — wartościami. Następnie wykonaj poniższe operacje przy użyciu funkcji wyższego rzędu dla tablic:
- Użyj
array_filter()z niestandardową funkcją zwrotną, aby pozostawić tylko tych pracowników, którzy przepracowali co najmniej tyle godzin, ile wynosi próg minimalny - Użyj
array_map()z niestandardową funkcją zwrotną, aby obliczyć wynagrodzenie za nadgodziny dla przefiltrowanych pracowników (nadgodziny to godziny powyżej 40, płatne według stawki 1,5 raza wyższej niż stawka 25 $ za godzinę w ramach zwykłych godzin pracy) - Użyj
array_reduce()z niestandardową funkcją zwrotną, aby obliczyć łączne wynagrodzenie za nadgodziny wszystkich przefiltrowanych pracowników
Wyświetl wyniki w następującym formacie:
- Najpierw wyświetl imię i nazwisko każdego zakwalifikowanego pracownika oraz jego wynagrodzenie za nadgodziny, każde w osobnym wierszu, w formacie
Name: $Amount(zaokrąglone do 2 miejsc po przecinku) - Na koniec wyświetl łączne wynagrodzenie za nadgodziny w formacie
Total: $Amount(zaokrąglone do 2 miejsc po przecinku)
Szczegóły obliczeń:
- Zwykłe godziny pracy (do 40): 25 $ za godzinę
- Nadgodziny (powyżej 40): 37.50 $ za godzinę (stawka 1,5 raza wyższa)
- Jeśli pracownik przepracował 40 godzin lub mniej, jego wynagrodzenie za nadgodziny wynosi 0.00 $
Format danych wejściowych:
- Pierwszy wiersz: imiona i nazwiska pracowników rozdzielone przecinkami (na przykład:
Alice,Bob,Charlie,Diana,Eve) - Drugi wiersz: liczba godzin pracy podana jako liczby i rozdzielona przecinkami (na przykład:
45,32,50,28,40) - Trzeci wiersz: próg minimalnej liczby godzin w postaci liczby (na przykład:
35)
Oczekiwany wynik: Każdy zakwalifikowany pracownik wraz z wynagrodzeniem za nadgodziny w osobnym wierszu, a po nich łączne wynagrodzenie za nadgodziny; wszystkie kwoty są sformatowane do 2 miejsc po przecinku
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Przekształć godziny na liczby całkowite
$hours = array_map('intval', $hours);
// Utwórz tablicę asocjacyjną łączącą imiona i godziny
$employees = array_combine($names, $hours);
// TODO: Napisz swój kod poniżej
// 1. Użyj array_filter(), aby zachować pracowników, którzy przepracowali co najmniej minimalną liczbę godzin
// 2. Użyj array_map(), aby obliczyć wynagrodzenie za nadgodziny dla wybranych pracowników
// 3. Użyj array_reduce(), aby obliczyć łączne wynagrodzenie za nadgodziny
// Wyświetl wyniki
// Wyświetl wynagrodzenie za nadgodziny każdego pracownika spełniającego kryterium
// Wyświetl łączne wynagrodzenie za nadgodziny
?>Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wyników6Funkcje wyższego rzędu dla tablic
Przekształcanie za pomocą 'array_map''array_map' z własną funkcjąFiltrowanie za pomocą 'array_filter''array_filter' z własną funkcjąRedukowanie za pomocą 'array_reduce'Przechodzenie po elementach za pomocą 'array_walk'Podsumowanie: przetwarzanie danychPoćwicz samodzielnie: Kompilator PHP online