Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Kamu 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";
}
?>
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