Vòng lặp giúp sinh bảng cửu chương, hiển thị danh sách sinh viên, duyệt kết quả truy vấn. Bài này học bốn loại vòng lặp của PHP, break/continue và cách sinh HTML lặp lại.
- Dùng for khi biết số lần, while/do-while khi lặp theo điều kiện
- Dùng foreach duyệt mảng (học kỹ ở bài Mảng)
- Điều khiển bằng break, continue
- Sinh bảng, danh sách HTML bằng vòng lặp
Khái niệm và lý thuyết
for gồm khởi tạo; điều kiện; bước nhảy. while kiểm tra điều kiện trước; do...while chạy ít nhất một lần rồi mới kiểm tra. foreach duyệt từng phần tử mảng, là vòng lặp dùng nhiều nhất trong PHP vì dữ liệu từ form và CSDL đều là mảng.
for và while
<?php
for ($i = 1; $i <= 5; $i++) {
echo "$i x 7 = " . ($i * 7) . "<br>";
}
$tong = 0; $n = 1;
while ($n <= 100) { $tong += $n; $n++; }
echo "Tổng 1..100 = $tong<br>";
$lan = 0;
do {
$lan++;
echo "Thử lần $lan<br>";
} while ($lan < 3);foreach
<?php
$sinh_vien = ["An", "Bình", "Chi", "Dũng"];
foreach ($sinh_vien as $stt => $ten) {
echo ($stt + 1) . ". $ten<br>";
}
$diem = ["Toán" => 8, "Tin" => 9.5, "Anh" => 7];
foreach ($diem as $mon => $d) {
echo "$mon: $d<br>";
}
foreach ($diem as &$d) { $d = min(10, $d + 0.5); } // sửa trực tiếp (tham chiếu)
unset($d); // luôn unset sau khi dùng &break và continue
<?php
for ($i = 1; $i <= 20; $i++) {
if ($i % 2 == 0) continue; // bỏ qua số chẵn
if ($i > 10) break; // dừng hẳn
echo "$i "; // 1 3 5 7 9
}
// break 2: thoát hai vòng lồng nhau
for ($h = 1; $h <= 3; $h++) {
for ($c = 1; $c <= 3; $c++) {
if ($h * $c == 4) break 2;
echo "($h,$c) ";
}
}Sinh HTML bằng vòng lặp
<table border="1" cellpadding="6">
<tr><th>×</th><?php for ($c = 1; $c <= 9; $c++): ?><th><?= $c ?></th><?php endfor; ?></tr>
<?php for ($h = 1; $h <= 9; $h++): ?>
<tr style="background: <?= $h % 2 ? '#fff' : '#f1f8e9' ?>">
<th><?= $h ?></th>
<?php for ($c = 1; $c <= 9; $c++): ?>
<td><?= $h * $c ?></td>
<?php endfor; ?>
</tr>
<?php endfor; ?>
</table>Cú pháp thay thế for: ... endfor;, foreach: ... endforeach;, while: ... endwhile; giúp xen HTML dễ đọc.
Khi hiển thị danh sách lấy từ CSDL, mẫu quen thuộc là while ($row = $result->fetch_assoc()) { ... } (loạt PHP và MySQL).
Vòng lặp vô hạn (quên tăng biến trong while) làm trang treo đến khi hết thời gian (max_execution_time = 30 giây). Kiểm tra điều kiện dừng kỹ.
- In bảng cửu chương 1–9 như ví dụ, tô màu xen kẽ hàng.
- Tính tổng các số chia hết cho 3 hoặc 5 nhỏ hơn 1000.
- Vẽ tam giác sao cao n hàng (n từ URL).
- Dùng foreach in danh sách môn học và điểm, tô đỏ môn dưới 5.
- for: biết số lần; while/do-while: theo điều kiện.
- foreach duyệt mảng, có dạng $k => $v.
- break dừng, continue bỏ qua; break 2 cho vòng lồng.
- Cú pháp thay thế để sinh HTML.