Riepilogo: elaborazione dei dati
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 45 di 68.
Sfida
FacileRiceverai tre input: un elenco di nomi di dipendenti separati da virgole, un elenco separato da virgole delle rispettive ore di lavoro della settimana e una soglia minima di ore. Il primo input contiene i nomi nel formato Alice,Bob,Charlie,Diana,Eve, il secondo contiene le ore come numeri nel formato 45,32,50,28,40 e il terzo input è la soglia minima di ore espressa come numero (esempio: 35).
Leggi tutti e tre gli input e convertili in array appropriati. Crea un array associativo combinato in cui i nomi dei dipendenti siano le chiavi e le loro ore di lavoro siano i valori. Quindi esegui le seguenti operazioni usando funzioni di array di ordine superiore:
- Usa
array_filter()con una funzione di callback personalizzata per mantenere solo i dipendenti che hanno lavorato almeno il numero minimo di ore richiesto - Usa
array_map()con una funzione di callback personalizzata per calcolare la retribuzione per gli straordinari dei dipendenti filtrati (gli straordinari sono le ore oltre le 40, retribuite a 1.5 volte la tariffa di $25 all'ora per le ore ordinarie) - Usa
array_reduce()con una funzione di callback personalizzata per calcolare la retribuzione totale degli straordinari di tutti i dipendenti filtrati
Stampa i risultati nel seguente formato:
- Per prima cosa, stampa il nome di ciascun dipendente idoneo e la relativa retribuzione per gli straordinari su righe separate, nel formato
Name: $Amount(arrotondata a 2 cifre decimali) - Infine, stampa la retribuzione totale degli straordinari nel formato
Total: $Amount(arrotondata a 2 cifre decimali)
Dettagli del calcolo:
- Ore ordinarie (fino a 40): $25 all'ora
- Ore straordinarie (oltre 40): $37.50 all'ora (tariffa moltiplicata per 1.5)
- Se un dipendente ha lavorato 40 ore o meno, la sua retribuzione per gli straordinari è $0.00
Formato dell'input:
- Prima riga: nomi dei dipendenti separati da virgole (esempio:
Alice,Bob,Charlie,Diana,Eve) - Seconda riga: ore di lavoro come numeri separati da virgole (esempio:
45,32,50,28,40) - Terza riga: soglia minima di ore espressa come numero (esempio:
35)
Output previsto: ogni dipendente idoneo con la relativa retribuzione per gli straordinari su righe separate, seguito dalla retribuzione totale degli straordinari; tutti gli importi sono formattati con 2 cifre decimali
Provalo tu
<?php
// Leggi i dati di input
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Converti le ore in numeri interi
$hours = array_map('intval', $hours);
// Crea un array associativo che abbini nomi e ore
$employees = array_combine($names, $hours);
// TODO: Scrivi il tuo codice qui sotto
// 1. Usa array_filter() per mantenere i dipendenti che hanno lavorato almeno il numero minimo di ore
// 2. Usa array_map() per calcolare la retribuzione degli straordinari per i dipendenti filtrati
// 3. Usa array_reduce() per calcolare la retribuzione totale degli straordinari
// Mostra i risultati
// Stampa la retribuzione degli straordinari di ogni dipendente idoneo
// Stampa la retribuzione totale degli straordinari
?>Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classifica6Funzioni di ordine superiore sugli array
Trasformare con 'array_map''array_map' con una funzione personalizzataFiltrare con 'array_filter''array_filter' con una funzione personalizzataRidurre con 'array_reduce'Iterare con 'array_walk'Riepilogo: elaborazione dei datiEsercitati da solo: Compilatore PHP online