Menu
CoddyTech

Mengurangi dengan 'array_reduce'

Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 43 dari 68.

Fungsi array_reduce() menggunakan pendekatan yang berbeda dari array_map() dan array_filter(). Alih-alih mengembalikan array baru, fungsi ini memproses semua elemen dalam array untuk menghasilkan satu nilai. Fungsi ini cocok untuk operasi seperti menghitung total, mencari nilai maksimum, atau menggabungkan semua elemen menjadi satu hasil.

Fungsi ini menerima array yang akan diproses dan fungsi callback yang menentukan cara menggabungkan elemen, serta parameter ketiga yang bersifat opsional: nilai awal. Fungsi callback menerima dua parameter: hasil yang terakumulasi (disebut "carry") dan elemen array saat ini.

<?php
function addNumbers($carry, $item) {
    return $carry + $item;
}

$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// Hasil: 15
?>

Dalam contoh ini, fungsi dimulai dengan nilai awal 0, lalu berulang kali memanggil addNumbers dengan total sementara dan setiap elemen array. Proses akumulasi ini berlanjut sampai semua elemen diproses, sehingga kamu mendapatkan nilai hasil reduksi akhir.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua input: list angka yang dipisahkan koma dan tipe operasi. Input pertama berisi angka sebagai string dalam format 5,10,15,20,25, dan input kedua adalah satu karakter yang menunjukkan operasi: S untuk penjumlahan, P untuk perkalian, atau M untuk nilai maksimum.

Baca kedua input, ubah angka yang dipisahkan koma menjadi array bilangan bulat, buat fungsi callback khusus yang melakukan operasi yang ditentukan, gunakan array_reduce() dengan fungsi callback-mu dan nilai awal yang sesuai untuk memproses semua angka menjadi satu hasil, lalu cetak hasil akhirnya.

Detail operasi:

  • S (Penjumlahan): Jumlahkan semua angka (nilai awal: 0)
  • P (Perkalian): Kalikan semua angka (nilai awal: 1)
  • M (Maksimum): Cari angka terbesar (nilai awal: angka pertama dalam array atau angka yang sangat kecil)

Fungsi callback-mu harus menerima dua parameter: hasil yang terakumulasi (carry) dan elemen array saat ini (item), lalu mengembalikan nilai akumulasi yang telah diperbarui berdasarkan tipe operasi.

Format input:

  • Baris pertama: Angka yang dipisahkan koma (contoh: 5,10,15,20,25)
  • Baris kedua: Tipe operasi, yaitu S, P, atau M (contoh: S)

Output yang diharapkan: Satu angka yang menunjukkan hasil operasi reduce

Coba sendiri

<?php
// Baca input
$numbers_input = trim(fgets(STDIN));
$operation = trim(fgets(STDIN));

// Ubah string yang dipisahkan koma menjadi array berisi bilangan bulat
$numbers = array_map('intval', explode(',', $numbers_input));

// TODO: Tulis kodemu di bawah ini
// Buat fungsi callback berdasarkan jenis operasi
// Gunakan array_reduce() dengan fungsi callback-mu dan nilai awal yang sesuai


// Tampilkan hasilnya sebagai output
echo $result;
?>
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