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.
Tantangan
MudahKamu 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, atauM(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;
?>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