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.
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)
// }