Cách dễ nhất để tạo một vòng lặp trong một kịch bản PHP là với cấu trúc while . Cú pháp của vòng lặp while trong PHP tương tự như trong ngôn ngữ C. Khối thân vòng lặp sẽ được thực thi lặp đi lặp lại miễn là biểu thức Boolean trong câu lệnh while là đúng.
Sơ đồ luồng dưới đây giúp hiểu cách hoạt động của vòng lặp while trong PHP −
Giá trị của biểu thức được kiểm tra mỗi lần ở đầu vòng lặp. Nếu biểu thức while đánh giá là sai ngay từ đầu, vòng lặp sẽ không chạy dù chỉ một lần. Ngay cả khi biểu thức trở thành sai trong quá trình thực thi khối lệnh, việc thực thi sẽ không dừng lại cho đến khi kết thúc vòng lặp.
Cú pháp của vòng lặp while có thể được diễn đạt như sau −
while (expr){ statements }
Đoạn mã sau đây cho thấy một ví dụ đơn giản về cách hoạt động của vòng lặp while trong PHP. Biến $x được khởi tạo với giá trị 1 trước khi vòng lặp bắt đầu. Thân vòng lặp được yêu cầu thực hiện miễn là nó nhỏ hơn hoặc bằng 10. Câu lệnh echo trong thân vòng lặp in ra số lần lặp hiện tại và tăng giá trị của x , để điều kiện cuối cùng sẽ trở thành sai.
<?php $x = 1; while ($x<=10) { echo "Iteration No. $x \n"; $x++; } ?>
Nó sẽ tạo ra output −
Iteration No. 1 Iteration No. 2 Iteration No. 3 Iteration No. 4 Iteration No. 5 Iteration No. 6 Iteration No. 7 Iteration No. 8 Iteration No. 9 Iteration No. 10
Lưu ý rằng điều kiện kiểm tra được kiểm tra ở đầu mỗi vòng lặp. Ngay cả khi điều kiện trở thành sai bên trong vòng lặp, việc thực thi sẽ không dừng lại cho đến khi kết thúc vòng lặp.
Trong ví dụ sau, "x" được tăng thêm 3 trong mỗi lần lặp. Ở lần lặp thứ ba, "x" trở thành 9. Vì điều kiện kiểm tra vẫn đúng, vòng lặp tiếp theo diễn ra trong đó "x" trở thành 12. Khi điều kiện trở thành sai, vòng lặp dừng lại.
<?php $x = 0; while ($x<=10){ $x+=3; echo "Iteration No. $x \n"; } ?>
Nó sẽ tạo ra output −
Iteration No. 3 Iteration No. 6 Iteration No. 9 Iteration No. 12
Không phải lúc nào cũng cần thiết phải có biến lặp tăng lên. Nếu giá trị ban đầu của biến lặp lớn hơn giá trị mà vòng lặp dự định kết thúc, thì nó phải được giảm đi.
<?php $x = 5; while ($x>0) { echo "Iteration No. $x \n"; $x--; } ?>
Nó sẽ tạo ra output −
Iteration No. 5 Iteration No. 4 Iteration No. 3 Iteration No. 2 Iteration No. 1
Một mảng chỉ mục trong PHP là một tập hợp các phần tử, mỗi phần tử được xác định bởi một chỉ mục tăng dần bắt đầu từ 0.
Bạn có thể duyệt một mảng bằng cách tạo một vòng lặp while bằng cách liên tục truy cập phần tử tại chỉ số x cho đến khi "x" đạt độ dài của mảng. Ở đây, "x" là một biến đếm, được tăng lên sau mỗi lần lặp. Chúng ta cũng cần một hàm count() trả về kích thước của mảng.
Hãy xem xét ví dụ sau −
<?php $numbers = array(10, 20, 30, 40, 50); $size = count($numbers); $x=0; while ($x<$size) { echo "Number at index $x is $numbers[$x] \n"; $x++; } ?>
Nó sẽ tạo ra output −
Number at index 0 is 10 Number at index 1 is 20 Number at index 2 is 30 Number at index 3 is 40 Number at index 4 is 50
Bạn có thể bao gồm một vòng lặp while bên trong một vòng lặp while khác. Cả hai vòng lặp while bên ngoài và bên trong đều được điều khiển bởi hai biến riêng biệt, được tăng lên sau mỗi lần lặp.
<?php $i=1; $j=1; while ($i<=3){ while ($j<=3){ echo "i= $i j= $j \n"; $j++; } $j=1; $i++; } ?>
Nó sẽ tạo ra output −
i= 1 j= 1 i= 1 j= 2 i= 1 j= 3 i= 2 j= 1 i= 2 j= 2 i= 2 j= 3 i= 3 j= 1 i= 3 j= 2 i= 3 j= 3
Lưu ý rằng "j", biến đếm cho vòng lặp while bên trong, được khởi tạo lại thành 1 sau khi nó nhận tất cả các giá trị, để cho giá trị tiếp theo của "i", "j" lại bắt đầu từ 1.
Trong PHP, một chuỗi có thể được coi là một tập hợp các ký tự có chỉ mục. Do đó, một vòng lặp while với một biến đếm từ "0" đến độ dài của chuỗi có thể được sử dụng để lấy một ký tự tại một thời điểm.
Ví dụ sau đây đếm số nguyên âm trong một chuỗi cho trước. Chúng ta sử dụng strlen() để lấy độ dài và str_contains() để kiểm tra xem ký tự có phải là một trong các nguyên âm hay không.
<?php $line = "PHP is a popular general-purpose scripting language that is especially suited to web development."; $vowels="aeiou"; $size = strlen($line); $i=0; $count=0; while ($i<$size){ if (str_contains($vowels, $line[$i])) { $count++; } $i++; } echo "Number of vowels = $count"; ?>
Nó sẽ tạo ra output −
Number of vowels = 32
PHP cũng cho phép bạn sử dụng cú pháp thay thế cho vòng lặp while . Thay vì nhóm nhiều hơn một câu lệnh trong dấu ngoặc nhọn, thân vòng lặp được đánh dấu bằng một ký hiệu ":" (dấu hai chấm) sau điều kiện và câu lệnh endwhile ở cuối.
<?php $x = 1; while ($x<=10): echo "Iteration No. $x \n"; $x++; endwhile; ?>
Nó sẽ tạo ra output −
Iteration No. 1 Iteration No. 2 Iteration No. 3 Iteration No. 4 Iteration No. 5 Iteration No. 6 Iteration No. 7 Iteration No. 8 Iteration No. 9 Iteration No. 10
Lưu ý rằng câu lệnh endwhile kết thúc bằng dấu chấm phẩy.