Kodealgo

foreach PHP

foreach merupakan perulangan yang dirancang khusus untuk bekerja dengan array dan objek, perulangan yang satu ini bisa menjadi alternatif yang lebih ringkas untuk perulangan for.

Saat kita melakukan perulangan terhadap array menggunakan perulangan for, kita harus mengetahui panjang array untuk menghentikan perulangan, sedangkan dengan foreach kita tidak perlu menentukan panjang array karena perulangan yang satu ini akan berhenti secara otomatis sesuai dengan panjang array yang diulang.

Berikut beberapa topik terkait perulangan foreach yang akan kita bahas.

  1. Sintaks

Sintaks

Ada dua sintaks yang bisa kita gunakan, contoh pertama di bawah pada setiap iterasi nilai elemen akan ditetapkan ke $value dan kita dapat menggunakannya di badan foreach. Sedangkan sintaks kedua kita menetakpan kunci ($key) dan nilai ($nilai) setiap elemen elemen array.

foreach (iterable_expression as $value) {

}

// atau

foreach (iterable_expression as $key => $value) {

}

Penjelasan

  • iterable_expression - array atau objek yang akan diulang.
  • $key - nama variabel untuk kunci elemen array.
  • $value - nama variabel untuk nilai elemen array.

Perulangan foreach dengan Array Numerik

Mari kita lihat contoh sederhana di bawah, misalnya kita ingin mengulangi array numerik bernama $names, kita ingin mencetak setiap nilai elemen di dalam array tersebut ke layar menggunakan perulangan foreach.

$names = ['Budi', 'Bambang', 'Dodi'];

foreach ($names as $name) {
  echo $name . PHP_EOL;
}

// Budi
// Bambang
// Dodi

Perulangan foreach dengan Array Asosiatif

Sintaks kedua perulangan foreach biasanya digunakan saat kita ingin melakukan iterasi terhadap setiap elemen array asosiatif dimana kita memerlukan kunci dan nilai setiap elemen.

Contoh dibawah kita melakukan iterasi terhadap array $students dan mencetak kunci ($key) dan nilainya (value) ke layar.

$students = [
    'name' => 'Budi',
    'gender' => 'male',
];

foreach ($students as $key => $value) {
  echo "$key = $value" . PHP_EOL;
}

// name = Budi
// gender = male

Mengubah Elemen Array

Secara default, saat kita melakukan perulangan pada setiap elemen array di dalam badan foreach, kita tidak bisa mengubah setiap elemen secara langsung.

Misalnya, contoh dibawah kita ingin mengalikan setiap elemen array dengan 2, kita mengharapkan $numbers berisi angka yang dikalikan dengan dua, hasilnya elemen array $numbers tidak berubah.

$numbers = [1, 2, 3];

foreach ($numbers as $number) {
  $number = $number * 2;
}

var_dump($numbers);

// array(3) {
//   [0]=>
//   int(1)
//   [1]=>
//   int(2)
//   [2]=>
//   int(3)
// }

Agar kita dapat mengubah setiap elemen array sumber secara langsung, kita bisa menggunakan referensi (&$value), contoh dibawah sekarang berubah sesuai dengan yang kita harapkan.

unse($number) digunakan untuk menghentikan referensi.

$numbers = [1, 2, 3];

foreach ($numbers as &$number) {
  $number = $number * 2;
}

unset($number);

var_dump($numbers);

// array(3) {
//   [0]=>
//   int(2)
//   [1]=>
//   int(4)
//   [2]=>
//   int(6)
// }