Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Kamu 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

?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler PHP online