for ($i = 0; $i < 5; $i++) { ... } menjalankan blok sebanyak jumlah yang tetap. Ketiga bagiannya adalah nilai awal ($i = 0, berjalan sekali), kondisi ($i < 5, diperiksa sebelum setiap putaran), dan langkah ($i++, berjalan setelah setiap putaran). Loop berakhir begitu kondisinya bernilai false.
$i masih ada setelah loop dan berisi nilai yang membuat kondisinya false (6). PHP tidak punya block scope untuk variabel loop.
Menelusuri array dengan indeks
Untuk list dengan key 0, 1, 2 ..., penghitungnya sekaligus berfungsi sebagai indeks. Simpan dulu hasil count() ke variabel supaya fungsi itu tidak dipanggil lagi di setiap putaran.
Bagian pertama boleh berisi beberapa ekspresi yang dipisahkan koma, begitulah $n = count($fruits) diisi sekali saja. Kalau kamu hanya butuh setiap nilainya (bukan elemen di sekitarnya), foreach lebih pendek dan juga bekerja pada array yang key-nya bukan 0 sampai n - 1.
Menghitung mundur dan melangkah lebih dari 1
Langkahnya bisa berupa ekspresi apa pun: $i-- untuk menghitung mundur, $i += 2 untuk setiap angka kedua, $i *= 2 untuk pangkat dua.
range('a', 'h') membuat array ['a', 'b', ... 'h']. Dengan range(1, 10) dan foreach, kamu mendapat hitungan yang sama seperti loop for, dengan konsekuensi seluruh array dibuat lebih dulu.
break dan continue
break langsung mengakhiri loop. continue melewati sisa putaran saat ini dan melompat ke langkah serta pemeriksaan kondisi berikutnya.
Loop kedua punya kondisi kosong, yang berarti "selalu true", jadi loop itu berjalan sampai break. Di loop bersarang, break 2 dan continue 2 bekerja pada loop luar, seperti yang ditunjukkan contoh berikutnya.
For loop bersarang: tabel perkalian
Loop di dalam loop menjalankan loop dalam sampai selesai untuk setiap putaran loop luar. Di sini output-nya berupa HTML, jadi tab Halaman menampilkan tabel sungguhan.
Ganti $size menjadi 12 lalu jalankan lagi. Bentuk for (...): dan endfor; adalah sintaks alternatif yang membuat loop tetap mudah dibaca di antara tag HTML. Tabel yang sama dalam bentuk teks biasa, dengan break 2 untuk menghentikan kedua loop:
Kesalahan umum: selisih satu dan loop tanpa akhir
Dua bug klasik pada for: memakai <= dengan count() membaca satu elemen melewati akhir array, yang dilaporkan PHP sebagai Warning: Undefined array key 3 dan dianggap null; dan langkah yang tidak pernah menggerakkan penghitung ke arah akhir ($i-- padahal maksudnya $i++) membuat kondisinya true selamanya.
Untuk loop yang panjangnya tidak bisa diketahui sebelumnya, misalnya membaca sampai file berakhir, while loop lebih cocok.
Pertanyaan yang sering diajukan
Bagaimana cara menelusuri array dengan indeks di PHP?
Untuk list dengan key 0, 1, 2, pakai for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. Di kebanyakan kode, foreach ($arr as $i => $value) lebih sederhana, memberi indeks yang sama, dan juga bekerja saat key-nya bukan 0 sampai n dikurangi 1.
Bagaimana cara keluar dari for loop di PHP?
break; langsung keluar dari loop. Di dalam loop bersarang, break 2; keluar dari loop dalam sekaligus loop yang membungkusnya. continue; melewati sisa putaran saat ini dan berlanjut ke putaran berikutnya.
Bagaimana cara menghitung mundur dengan for loop di PHP?
Mulai dari angka besar, bandingkan dengan >=, lalu kurangi: for ($i = 10; $i >= 1; $i--) { echo $i; }. Untuk langkah selain satu, ubah bagian ketiganya, misalnya $i += 2 atau $i -= 5.
Kapan sebaiknya memakai for alih-alih foreach di PHP?
Pakai for saat kamu menghitung sesuatu (ulangi 5 kali, angka 1 sampai 100, setiap elemen kedua) atau butuh elemen sebelum atau sesudahnya lewat indeks. Pakai foreach untuk mengunjungi setiap elemen array, terutama array asosiatif, yang tidak punya indeks numerik.