Perulangan (for, while, foreach)
for, while, do-while, foreach dengan key, break/continue, serta kesalahan umum perulangan.
Mengapa perulangan?
Perulangan menjalankan blok kode berkali-kali tanpa menulisnya berulang-ulang: menampilkan 100 produk, menjumlahkan harga, memproses baris file, dan seterusnya.
for — jumlah pengulangan sudah diketahui
for ($i = 1; $i <= 5; $i++) {
echo "Baris ke-{$i}\n";
}
Tiga bagian di dalam kurung: inisialisasi ($i = 1), kondisi (lanjut selama benar), dan langkah ($i++ setiap putaran).
while dan do-while
$saldo = 100;
while ($saldo > 0) {
$saldo -= 30; // 100, 70, 40, 10, -20
}
do {
echo "Dijalankan minimal sekali\n";
} while (false);
while mengecek kondisi sebelum masuk; do-while mengecek sesudah sehingga badan perulangan pasti jalan minimal sekali. Hati-hati dengan perulangan tak berujung: pastikan ada sesuatu yang mengubah kondisi.
foreach — pilihan utama untuk array
$buah = ['apel', 'jeruk', 'mangga'];
foreach ($buah as $b) {
echo $b . "\n";
}
$harga = ['apel' => 5000, 'jeruk' => 4000];
foreach ($harga as $nama => $h) {
echo "{$nama}: Rp " . number_format($h, 0, ',', '.') . "\n";
}
Bentuk $key => $value memberi akses ke kunci sekaligus nilai. Untuk mengubah isi array saat looping, gunakan referensi foreach ($arr as &$v) dan selalu unset($v) sesudahnya — kalau tidak, variabel $v tetap menunjuk elemen terakhir dan memunculkan bug yang membingungkan.
break dan continue
foreach ($angka as $n) {
if ($n % 2 === 0) {
continue; // lewati genap, lanjut putaran berikut
}
if ($n > 50) {
break; // hentikan seluruh perulangan
}
echo $n;
}
break 2; keluar dari dua tingkat perulangan bersarang sekaligus.
Rentang dan generator ringan
range(1, 5) membuat array [1,2,3,4,5]; range('a', 'e') huruf; range(0, 100, 25) melompat 25. Untuk data sangat besar, bab lanjutan memperkenalkan generator (yield) agar tidak memuat semuanya ke memori.
Pola umum: akumulasi
$total = 0;
foreach ($keranjang as $item) {
$total += $item['harga'] * $item['qty'];
}
Pola ini (siapkan variabel awal → tambah di tiap putaran) muncul di hampir semua program: menjumlah, menghitung, mengumpulkan hasil ke array baru dengan $hasil[] = ....