Przekształcanie za pomocą 'array_map'
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 39 z 68.
Funkcja array_map() to potężne narzędzie, które przekształca każdy element tablicy, stosując do niego funkcję zwrotną. W przeciwieństwie do funkcji, które modyfikują oryginalną tablicę, array_map() tworzy i zwraca zupełnie nową tablicę z przekształconymi wartościami.
Podstawowa składnia wymaga dwóch parametrów: najpierw funkcji zwrotnej, którą chcesz zastosować, a następnie tablicy, którą chcesz przekształcić. PHP ma wiele wbudowanych funkcji, które doskonale sprawdzają się jako funkcje zwrotne w array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Wynik: ["ALICE", "BOB", "CHARLIE"]
?>W tym przykładzie funkcja strtoupper jest stosowana do każdego elementu tablicy $names. Oryginalna tablica pozostaje niezmieniona, a $uppercaseNames zawiera przekształcone wyniki. Dzięki temu array_map() idealnie się sprawdza, gdy trzeba przetworzyć dane bez utraty oryginalnych wartości.
Wyzwanie
ŁatwyOtrzymasz dwa dane wejściowe: rozdzieloną przecinkami listę cen produktów oraz procentową wartość rabatu. Pierwsze dane wejściowe zawierają ceny jako ciąg znaków w formacie 19.99,25.50,12.75,8.00, a drugie dane wejściowe to procentowa wartość rabatu podana jako liczba (przykład: 15).
Odczytaj oba dane wejściowe, przekonwertuj rozdzielone przecinkami ceny na tablicę liczb, zastosuj procentową wartość rabatu do każdej ceny za pomocą array_map(), wbudowanej funkcji floatval do konwersji oraz obliczenia rabatu, a następnie wypisz każdą cenę po rabacie w osobnym wierszu, zaokrągloną do 2 miejsc po przecinku.
Aby obliczyć cenę po rabacie: pomnóż cenę początkową przez (100 - discount) / 100.
Format danych wejściowych:
- Pierwszy wiersz: rozdzielone przecinkami ceny produktów (przykład:
19.99,25.50,12.75,8.00) - Drugi wiersz: procentowa wartość rabatu podana jako liczba (przykład:
15)
Oczekiwane dane wyjściowe: Każda cena po rabacie wypisana w osobnym wierszu, zaokrąglona do 2 miejsc po przecinku (przykład: 16.99, 21.68, 10.84, 6.80)
Spróbuj swoich sił
<?php
// Wczytaj dane wejściowe
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Przekształć ceny oddzielone przecinkami w tablicę
$prices = explode(',', $prices_input);
// TODO: Napisz swój kod poniżej
// Użyj array_map(), aby zastosować rabat do każdej ceny
// Wypisz każdą cenę po rabacie w osobnym wierszu
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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