Dengan perulangan, kode menjadi lebih singkat, rapi, dan mudah dipelihara. Blok kode akan terus berjalan selama kondisi tertentu terpenuhi.
PHP menyediakan empat jenis perulangan, yaitu for, while, do-while, dan foreach. Setiap jenis punya sintaks dan kegunaan masing-masing, dan semuanya dijelaskan satu per satu di bawah ini.
Perulangan for untuk Jumlah Putaran Pasti
Perulangan for dipakai saat programmer sudah tahu berapa kali kode harus berjalan. Sintaksnya terdiri dari tiga bagian di dalam kurung yang dipisahkan titik koma.
php
for (inisialisasi; kondisi; increment/decrement) {
// kode yang diulang
}
Inisialisasi menentukan nilai awal variabel penghitung dan hanya berjalan sekali di awal. Kondisi dicek sebelum setiap putaran. Jika bernilai true, perulangan lanjut, dan jika false, perulangan berhenti. Increment atau decrement mengubah nilai penghitung setelah setiap putaran selesai.
Contoh pertama menampilkan angka 1 sampai 5.
php
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Angka ke-" . $i . "\n";
}
?>
Hasilnya adalah lima baris, dari “Angka ke-1” sampai “Angka ke-5”.
Contoh kedua menghitung mundur dari 10 sampai 1. Programmer cukup mengganti increment menjadi decrement dan membalik kondisinya.
php
<?php
for ($i = 10; $i >= 1; $i--) {
echo $i . " ";
}
?>
// Hasil: 10 9 8 7 6 5 4 3 2 1
Contoh ketiga menjumlahkan angka 1 sampai 10 dengan variabel penampung bernama $total.
php
<?php
$total = 0;
for ($i = 1; $i <= 10; $i++) {
$total = $total + $i;
}
echo "Total: " . $total;
?>
// Hasil: Total: 55
Perulangan while dan do-while untuk Kondisi Tertentu
Perulangan while cocok saat jumlah putaran belum pasti, tetapi syarat berhentinya sudah jelas. Kondisi dicek di awal. Jika bernilai false sejak awal, kode di dalamnya tidak berjalan sama sekali.
php
<?php
$nilai = 1;
while ($nilai <= 100) {
echo $nilai . " ";
$nilai = $nilai * 2;
}
?>
// Hasil: 1 2 4 8 16 32 64
Programmer wajib mengubah variabel yang dicek dalam kondisi, seperti $i++ atau $nilai * 2 pada contoh di atas. Jika lupa, kondisi akan selalu true dan perulangan tidak pernah berhenti. Kondisi ini disebut infinite loop.
Perulangan do-while mirip dengan while, tetapi kondisinya dicek di akhir. Akibatnya, blok kode pasti berjalan minimal satu kali walaupun kondisinya false sejak awal. Jangan lupa tanda titik koma setelah kondisi while.
php
<?php
$x = 10;
// Dengan while, tidak ada yang tampil
while ($x < 5) {
echo "while dijalankan\n";
}
// Dengan do-while, teks tampil satu kali
do {
echo "do-while dijalankan\n";
} while ($x < 5);
?>
// Hasil: do-while dijalankan
Kondisi $x < 5 bernilai false sejak awal. While tidak menjalankan apa pun, sedangkan do-while tetap menjalankan isinya satu kali.
Perulangan foreach untuk Membaca Array
Perulangan foreach dirancang khusus untuk membaca isi array dan objek. Programmer tidak perlu mengatur variabel penghitung atau mengetahui jumlah elemen. PHP menelusuri setiap elemen secara otomatis.
php
// Array biasa
foreach ($array as $nilai) {
// kode yang diulang
}
// Array asosiatif (dengan kunci)
foreach ($array as $kunci => $nilai) {
// kode yang diulang
}
Contoh pertama membaca array biasa berisi nama buah.
php
<?php
$buah = ["Apel", "Jeruk", "Mangga", "Pisang"];
foreach ($buah as $b) {
echo $b . "\n";
}
?>
Contoh kedua membaca array asosiatif. Variabel $nama menampung kunci, sedangkan $nilai menampung isinya.
php
<?php
$siswa = [
"Budi" => 85,
"Siti" => 90,
"Andi" => 78
];
foreach ($siswa as $nama => $nilai) {
echo $nama . " mendapat nilai " . $nilai . "\n";
}
?>
// Hasil:
// Budi mendapat nilai 85
// Siti mendapat nilai 90
// Andi mendapat nilai 78
Contoh ketiga menghitung rata-rata nilai. Fungsi count() menghitung jumlah elemen array.
php
<?php
$nilai = [80, 90, 70, 85, 75];
$total = 0;
foreach ($nilai as $n) {
$total += $n;
}
$rata = $total / count($nilai);
echo "Rata-rata: " . $rata;
?>
// Hasil: Rata-rata: 80
Break, Continue, dan Perulangan Bersarang
Perintah break menghentikan perulangan sepenuhnya. Pada contoh berikut, perulangan berhenti saat $i bernilai 6.
php
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i == 6) {
break;
}
echo $i . " ";
}
?>
// Hasil: 1 2 3 4 5
Perintah continue melewati putaran saat ini dan langsung lanjut ke putaran berikutnya. Contoh di bawah melewati angka genap, sehingga hanya angka ganjil yang tampil.
php
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == 0) {
continue;
}
echo $i . " ";
}
?>
// Hasil: 1 3 5 7 9
Perulangan bersarang atau nested loop adalah perulangan di dalam perulangan lain. Programmer biasa memakainya untuk membuat tabel, pola bintang, atau mengolah data dua dimensi. Untuk setiap satu putaran perulangan luar, perulangan dalam berjalan sampai selesai.
php
<?php
for ($baris = 1; $baris <= 5; $baris++) {
for ($kolom = 1; $kolom <= $baris; $kolom++) {
echo "*";
}
echo "\n";
}
?>
Kode di atas menghasilkan pola segitiga bintang dengan lima baris. Baris pertama berisi satu bintang, dan baris kelima berisi lima bintang.
Contoh berikutnya membuat tabel perkalian 1 sampai 3.
php
<?php
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
echo $i * $j . "\t";
}
echo "\n";
}
?>
// Hasil:
// 1 2 3
// 2 4 6
// 3 6 9
Perulangan PHP dalam HTML
Dalam pengembangan web, perulangan sering menghasilkan elemen HTML secara dinamis. Programmer tidak perlu menulis tag yang sama berulang-ulang. Cukup satu blok kode, dan PHP membuat semua elemennya.
Contoh pertama membuat daftar dropdown tahun dari 2020 sampai 2026.
php
<?php
for ($tahun = 2020; $tahun <= 2026; $tahun++) {
echo "$tahun";
}
?>
Contoh kedua menampilkan data produk dalam tabel. Setiap elemen array menjadi satu baris tabel.
php
<?php
$produk = [
["Laptop", 8000000],
["Mouse", 150000],
["Keyboard", 350000]
];
foreach ($produk as $p) {
echo "";
echo "" . $p[0] . "";
echo "" . $p[1] . "";
echo "";
}
?>
Memilih Jenis Perulangan dan Menghindari Kesalahan
Setiap jenis perulangan punya situasi yang paling pas. Pilihan yang tepat membuat kode lebih mudah dibaca dan lebih aman dijalankan.
| Jenis | Kapan dipakai | Contoh kasus |
|---|---|---|
| for | Jumlah putaran sudah diketahui | Mengulang 10 kali, menelusuri indeks 0 sampai n |
| while | Jumlah putaran tidak pasti dan bergantung pada kondisi | Membaca data sampai habis |
| do-while | Kode harus berjalan minimal satu kali | Menampilkan menu lalu meminta pengguna memilih |
| foreach | Bekerja dengan array atau koleksi data | Menampilkan daftar produk |
Ada empat kesalahan yang sering muncul saat memakai perulangan.
- Infinite loop. Variabel kondisi lupa diubah atau kondisinya salah, sehingga perulangan tidak pernah berhenti dan server bisa hang.
- Kesalahan satu angka (off-by-one). Programmer salah memilih antara < dan <=. Array dengan 5 elemen punya indeks 0 sampai 4, jadi kondisinya harus $i < 5, bukan $i <= 5.
- Mengubah array saat di-foreach. Memodifikasi array yang sedang ditelusuri bisa menghasilkan perilaku yang tidak terduga.
- Nested loop yang terlalu dalam. Semakin banyak tingkat, program semakin lambat dan sulit dibaca. Batasi sampai dua atau tiga tingkat.
Periksa kondisi dan batas indeks sebelum menjalankan perulangan PHP di server produksi.