Transformasi dengan 'array_map'
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 39 dari 68.
Fungsi array_map() adalah alat yang ampuh untuk mengubah setiap elemen dalam array dengan menerapkan fungsi callback pada tiap elemen. Tidak seperti fungsi yang mengubah array asli, array_map() membuat dan mengembalikan array baru sepenuhnya yang berisi nilai-nilai hasil transformasi.
Sintaks dasar memerlukan dua parameter: pertama, fungsi callback yang ingin kamu terapkan, dan kedua, array yang ingin kamu transformasikan. PHP memiliki banyak fungsi bawaan yang cocok digunakan sebagai callback dengan array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Hasil: ["ALICE", "BOB", "CHARLIE"]
?>Dalam contoh ini, strtoupper diterapkan pada setiap elemen dalam array $names. Array asli tetap tidak berubah, sedangkan $uppercaseNames berisi hasil yang telah diubah. Ini membuat array_map() ideal saat kamu perlu memproses data tanpa kehilangan nilai aslinya.
Tantangan
MudahKamu akan menerima dua input: list harga produk yang dipisahkan dengan koma dan persentase diskon. Input pertama berisi harga sebagai string dengan format 19.99,25.50,12.75,8.00, dan input kedua adalah persentase diskon sebagai angka (contoh: 15).
Baca kedua input, ubah harga yang dipisahkan dengan koma menjadi array angka, terapkan persentase diskon pada setiap harga menggunakan array_map() dengan fungsi bawaan floatval untuk konversi dan perhitungan diskon, lalu cetak setiap harga setelah diskon pada baris terpisah, dibulatkan hingga 2 angka desimal.
Untuk menghitung harga setelah diskon: kalikan harga awal dengan (100 - discount) / 100.
Format input:
- Baris pertama: Harga produk yang dipisahkan dengan koma (contoh:
19.99,25.50,12.75,8.00) - Baris kedua: Persentase diskon sebagai angka (contoh:
15)
Output yang diharapkan: Setiap harga setelah diskon dicetak pada baris terpisah, dibulatkan hingga 2 angka desimal (contoh: 16.99, 21.68, 10.84, 6.80)
Coba sendiri
<?php
// Baca input
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Ubah harga yang dipisahkan koma menjadi array
$prices = explode(',', $prices_input);
// TODO: Tulis kodemu di bawah ini
// Gunakan array_map() untuk menerapkan diskon pada setiap harga
// Tampilkan setiap harga setelah diskon pada baris terpisah
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkat6Fungsi array Tingkat Tinggi
Transformasi dengan 'array_map''array_map' dengan Fungsi KustomMemfilter dengan 'array_filter''array_filter' dengan Fungsi KustomMengurangi dengan 'array_reduce'Menelusuri dengan 'array_walk'Rangkuman: Pemrosesan DataLatihan sendiri: Compiler PHP online