Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Riceverai 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

?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online