Menelusuri dengan 'array_walk'
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 44 dari 68.
Fungsi array_walk() menawarkan pendekatan yang berbeda untuk memproses array dibandingkan dengan array_map(). Sementara array_map() membuat array baru dengan nilai yang telah diubah, array_walk() mengubah array asli secara langsung dengan menerapkan fungsi callback ke setiap elemen di tempat.
Fungsi ini sangat berguna saat kamu ingin mengubah array yang sudah ada tanpa membuat salinan. Fungsi callback yang kamu berikan menerima setiap elemen array melalui referensi, sehingga kamu dapat mengubah nilai aslinya secara langsung.
<?php
function addPrefix(&$value, $key) {
$value = "Item: " . $value;
}
$items = ["apple", "banana", "orange"];
array_walk($items, "addPrefix");
// $items sekarang berisi: ["Item: apple", "Item: banana", "Item: orange"]
?>Perhatikan bagaimana fungsi callback menggunakan &$value untuk menerima elemen array melalui referensi. Ini memungkinkan fungsi mengubah elemen array asli secara langsung. Parameter kedua, $key, memberi akses ke key elemen saat ini, meskipun parameter ini tidak selalu diperlukan untuk transformasi sederhana.
array_walk() juga mendukung argumen ketiga opsional yang memungkinkan kamu meneruskan data tambahan langsung ke fungsi callback. Ini berguna saat transformasimu bergantung pada nilai yang ditentukan di luar array, seperti awalan, akhiran, atau input dinamis lainnya.
Saat kamu memberikan argumen ketiga ke array_walk(), fungsi callback kamu menerimanya sebagai parameter ketiga:
<?php
function addCategory(&$value, $key, $category) {
$value = $category . ": " . $value;
}
$products = ["laptop", "mouse", "keyboard"];
$prefix = "Electronics";
array_walk($products, "addCategory", $prefix);
// $products sekarang: ["Electronics: laptop", "Electronics: mouse", "Electronics: keyboard"]
?>Di sini, $prefix diteruskan sebagai argumen ketiga ke array_walk(), dan callback menerimanya sebagai $category. Dengan cara ini, kamu bisa menggunakan kembali fungsi callback yang sama dengan prefix berbeda tanpa menetapkan nilai apa pun secara langsung di dalamnya.
Tantangan
MudahKamu akan menerima dua input: daftar nama produk yang dipisahkan koma dan awalan kategori. Input pertama berisi nama produk sebagai string dengan format laptop,mouse,keyboard,monitor, dan input kedua berupa teks awalan kategori (contoh: Electronics).
Baca kedua input, ubah nama produk yang dipisahkan koma menjadi array, buat fungsi callback yang menambahkan awalan kategori ke setiap nama produk dengan format "Category: ProductName", gunakan array_walk() dengan fungsi callback tersebut untuk mengubah array asli secara langsung, lalu cetak setiap nama produk yang sudah diubah pada baris terpisah.
Fungsi callback-mu harus menggunakan parameter &$value untuk mengubah elemen array melalui referensi. Fungsi tersebut harus menggabungkan awalan kategori dengan titik dua dan spasi, lalu nama produk.
Format input:
- Baris pertama: Nama produk yang dipisahkan koma (contoh:
laptop,mouse,keyboard,monitor) - Baris kedua: Teks awalan kategori (contoh:
Electronics)
Output yang diharapkan: Setiap nama produk yang sudah diubah dicetak pada baris terpisah dengan format Category: ProductName
Coba sendiri
<?php
// Baca nama-nama produk yang dipisahkan koma
$products_input = trim(fgets(STDIN));
// Baca awalan kategori
$category = trim(fgets(STDIN));
// Ubah string yang dipisahkan koma menjadi array
$products = explode(',', $products_input);
// TODO: Tulis kodemu di bawah ini
// Buat fungsi callback yang mengubah setiap nama produk dengan menambahkan awalan kategori
// Gunakan array_walk() dengan fungsi callback buatanmu untuk mengubah array
// Tampilkan setiap nama produk yang sudah diubah pada baris terpisah
foreach ($products as $product) {
echo $product . "\n";
}
?>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