Transformieren mit 'array_map'
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 39 von 68.
Die array_map()-Funktion ist ein leistungsstarkes Werkzeug, das jedes Element in einem Array transformiert, indem eine Callback-Funktion auf jedes einzelne angewendet wird. Im Gegensatz zu Funktionen, die das ursprüngliche Array verändern, erstellt und gibt array_map() ein völlig neues Array mit den transformierten Werten zurück.
Die grundlegende Syntax erfordert zwei Parameter: erstens die Callback-Funktion, die Sie anwenden möchten, und zweitens das Array, das Sie transformieren möchten. PHP verfügt über viele integrierte Funktionen, die perfekt als Callbacks mit array_map() funktionieren.
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Ergebnis: ["ALICE", "BOB", "CHARLIE"]
?>In diesem Beispiel wird strtoupper auf jedes Element im $names Array angewendet. Das ursprüngliche Array bleibt unverändert, während $uppercaseNames die transformierten Ergebnisse enthält. Dies macht array_map() ideal, wenn Sie Daten verarbeiten müssen, ohne die ursprünglichen Werte zu verlieren.
Aufgabe
EinfachSie erhalten zwei Eingaben: eine durch Kommas getrennte Liste von Produktpreisen und einen Rabattprozentsatz. Die erste Eingabe enthält Preise als Zeichenfolge im Format 19.99,25.50,12.75,8.00, und die zweite Eingabe ist der Rabattprozentsatz als Zahl (Beispiel: 15).
Lesen Sie beide Eingaben ein, konvertieren Sie die durch Kommas getrennten Preise in ein Array von Zahlen, wenden Sie den Rabattprozentsatz auf jeden Preis an, indem Sie array_map() mit der integrierten floatval-Funktion für die Konvertierung und einer Berechnung für den Rabatt verwenden, und geben Sie jeden rabattierten Preis in einer separaten Zeile aus, gerundet auf 2 Dezimalstellen.
Um den rabattierten Preis zu berechnen: Multiplizieren Sie den Originalpreis mit (100 - discount) / 100.
Eingabeformat:
- Erste Zeile: Durch Kommas getrennte Produktpreise (Beispiel:
19.99,25.50,12.75,8.00) - Zweite Zeile: Rabattprozentsatz als Zahl (Beispiel:
15)
Erwartete Ausgabe: Jeder rabattierte Preis in einer separaten Zeile, gerundet auf 2 Dezimalstellen (Beispiel: 16.99, 21.68, 10.84, 6.80)
Probier es selbst
<?php
// Eingabe lesen
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Kommagetrennte Preise in ein Array umwandeln
$prices = explode(',', $prices_input);
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie array_map(), um den Rabatt auf jeden Preis anzuwenden
// Geben Sie jeden rabattierten Preis in einer separaten Zeile aus
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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