1. Vòng lặp while trong PHP

Giống như các vòng lặp mà ta đã tìm hiểu, vòng lặp while cũng dùng để lặp dữ liệu. Vòng lặp while sẽ thực thi một khối mã mà miễn là điều kiện nó là đúng.

Cú pháp:

 <?php 
while ($dieukien) {
    // code...
}
?

$dieukien điều kiện của vòng lặp. Nếu điều kiện trả về True thì vòng lặp sẽ chạy và trả về False thì vòng lặp sẽ dừng lại. Vòng lặp sẽ lặp vô hạn nếu biểu thức điều kiện luôn đúng.

Ví dụ: dùng vòng lặp while liệt kê các số từ 1 đến 10

<?php
$i = 1; // Biến dùng để lặp
while ($i <= 10){ // Nếu $i <= 10 thì mới lặp
    echo $i ; // Xuất ra màn hình
    $i++; // Tăng biến $i lên 1
}
?>

Ta có: sau mỗi lần lặp biến $i thì biến sẽ tự động tăng thêm 1(bắt đầu là bằng 1 rồi 2 rồi 3…). Đem $i so sánh với biểu thức điều kiện nếu đúng sẽ in ra màn hình biến $i, nếu sai thì sẽ không được in ra và ở đây vòng lặp sẽ kết thúc.

2. Vòng lặp do while trong PHP

Vòng lặp do while ngược lại hẳn so với vòng lặp while. Vòng lặp while sẽ kiểm tra điều kiện trước rồi mới thực hiện thao tác bên trong vòng lặp. Còn do while thì sẽ thực hiện những gì bên trong vòng lặp trước rồi mới kiểm tra điều kiện. Nếu đúng thì tiếp tục vòng lặp kế tiếp và nếu sai sẽ dừng vòng lặp.

Cú pháp:

do {
    // dòng lệnh
} while ($bien);

Ví dụ hiển thị các số từ 1 đến 9

<?php
    $i = 1;
    do{
        echo "<p>" . $i . "</p>";
        $i++; //Câu lệnh này giúp cho điều kiện dần trở nên bị SAI
    }while($i < 10);
?>

Tương tự vòng lặp khác đầu tiên ta có biến $i. Bên trong câu lệnh do có 2 thao tác là in $i ra màn hình và tăng $i thêm 1. Sau đó kiểm tra điều kiện sau khi tăng $i thêm 1 có thỏa mãn việc nhỏ hơn 10 không. Nếu có sẽ tiếp tục thực hiện vòng lặp(in $i = 2, cộng $i thêm 1 …). Cho đến khi mà $i lớn hơn 10 thì vòng lặp sẽ kết thúc.

Chú ý

  • Kết thúc câu lệnh while cần có dấu ; nếu không sẽ bị lỗi
  • Vòng lặp do while luôn luôn thực hiện ít nhất một lần lặp vì nó thực hiện trước rồi mới kiểm tra điều kiện

Ví dụ dưới đây sẽ giải thích cho các bạn hiểu điều này:

<?php
    $i = 11;
    while($i < 10){
        echo "<p>" . $i . "</p>";
        $i++;
    }
    //vòng lặp while sẽ dừng vì sai điều kiện
    do{
        echo "<p>" . $i . "</p>";
        $i++;
    }while($i < 10);
 //vẫn in ra số 11 dù sai điều kiện
?>

3. Vòng lặp while do while lồng nhau và việc truy xuất mảng

Tất cả đều tương tự như vòng lặp for while và do while đều có thể lồng nhau hay truy xuất mảng.

Tôi sẽ không nói sâu thêm về phần này nữa mà đưa luôn ra ví dụ cụ thể cho dễ hiểu nhé.

  • Truy xuất mảng
<?php
   $so = array( 90, 191, 12, 13, 94,);
  
// Xuất theo cách thông thường
echo $so[0];
echo $so[1];
echo $so[2];
echo $so[3];
echo $so[4];
  
// Dùng while
$i = 0;
while ($i <= 4){
    echo $so[$i];
    $i++; // Tăng biến $i
}
  
// Dùng do .. while
$i = 0;
do {
    echo $so[$i];
    $i++;
}while ($i <=4);
?>
  • Lồng while và do while
<?php
$i = 0;
while ($i <= 10) {
    $j = $i;
    while ($j <= 10) {
        echo "*";
        $j++;
    }
    echo "<br>";
    $i++;
}
?>

4. Khi nào sử dụng vòng lặp for, while và do while?

Mình sẽ đưa ra một số nhận định như sau

  • For dùng trong vòng lặp với số lần biết trước và kiểm soát được.
  • While thì trong vòng lặp với số lần không biết trước, lúc code thì có thể kiểm soát được chứ lúc chạy thì có máy biết nó chạy tới đâu.
  • Do while tương tự while
  • Thêm một chút về if và switch case. If thì mang nhiều tính so sánh còn case thì mang tính phân loại nhiều hơn(nếu nó là chó thì,…là mèo thì,…là chuột thì…

Tóm lại việc này sẽ tùy vào kinh nghiệm của từng người. Các bạn hãy làm nhiều bài tập để có thêm kiến thức lúc đó thì sẽ tự biết là ta nên dùng vòng lặp nào để hợp lý với bài toán nhất.

Chú ý

Lúc code hãy cẩn thận và để ý kỹ nếu không nó lặp vô hạn rồi ngồi đợi mãi chả thấy dừng thì mệt!