Trasformare con 'array_map'
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 39 di 68.
La funzione array_map() è uno strumento potente che trasforma ogni elemento di un array applicando una funzione di callback a ciascuno di essi. A differenza delle funzioni che modificano l'array originale, array_map() crea e restituisce un array completamente nuovo con i valori trasformati.
La sintassi di base richiede due parametri: per primo, la funzione di callback che vuoi applicare, e per secondo, l'array che vuoi trasformare. PHP ha molte funzioni integrate che funzionano perfettamente come callback con array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Risultato: ["ALICE", "BOB", "CHARLIE"]
?>In questo esempio, strtoupper viene applicato a ogni elemento dell'array $names. L'array originale rimane invariato, mentre $uppercaseNames contiene i risultati trasformati. Questo rende array_map() ideale quando devi elaborare i dati senza perdere i valori originali.
Sfida
FacileRiceverai due input: un elenco di prezzi di prodotti separati da virgole e una percentuale di sconto. Il primo input contiene i prezzi come stringa nel formato 19.99,25.50,12.75,8.00, mentre il secondo input è la percentuale di sconto come numero (esempio: 15).
Leggi entrambi gli input, converti i prezzi separati da virgole in un array di numeri, applica la percentuale di sconto a ciascun prezzo usando array_map() con la funzione integrata floatval per la conversione e un calcolo dello sconto, quindi stampa ciascun prezzo scontato su una riga separata, arrotondato a 2 cifre decimali.
Per calcolare il prezzo scontato: moltiplica il prezzo originale per (100 - discount) / 100.
Formato di input:
- Prima riga: prezzi dei prodotti separati da virgole (esempio:
19.99,25.50,12.75,8.00) - Seconda riga: percentuale di sconto come numero (esempio:
15)
Output previsto: ciascun prezzo scontato stampato su una riga separata, arrotondato a 2 cifre decimali (esempio: 16.99, 21.68, 10.84, 6.80)
Provalo tu
<?php
// Leggi l'input
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Converti i prezzi separati da virgole in un array
$prices = explode(',', $prices_input);
// TODO: Scrivi il tuo codice qui sotto
// Usa array_map() per applicare lo sconto a ogni prezzo
// Stampa ogni prezzo scontato su una riga separata
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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