Vòng lặp while
là loại vòng lặp đơn giản nhất trong PHP. Họ cư xử giống như các đối tác C của họ. Dạng cơ bản của một câu lệnh while
là
while [expr] statement
Ý nghĩa của câu lệnh while
rất đơn giản. Nó yêu cầu PHP thực thi [các] câu lệnh lồng nhau lặp đi lặp lại, miễn là biểu thức while
có giá trị là true
. Giá trị của biểu thức được kiểm tra mỗi lần ở đầu vòng lặp, vì vậy ngay cả khi giá trị này thay đổi trong quá trình thực thi [các] câu lệnh lồng nhau, thì quá trình thực thi sẽ không dừng lại cho đến khi kết thúc vòng lặp [mỗi lần PHP chạy các câu lệnh trong vòng lặp là một lần lặp]. Nếu biểu thức _while
ước tính thành false
ngay từ đầu, thì [các] câu lệnh lồng nhau thậm chí sẽ không được chạy một lần
Giống như câu lệnh _if
, bạn có thể nhóm nhiều câu lệnh trong cùng một vòng lặp while
bằng cách bao quanh một nhóm câu lệnh bằng dấu ngoặc nhọn hoặc bằng cách sử dụng cú pháp thay thế
Câu lệnh while
0 tương tự như một loạt câu lệnh IF trên cùng một biểu thức. Trong nhiều trường hợp, bạn có thể muốn so sánh cùng một biến [hoặc biểu thức] với nhiều giá trị khác nhau và thực thi một đoạn mã khác tùy thuộc vào giá trị mà nó tương đương. Đây chính xác là những gì câu lệnh while
0 dành cho
Ghi chú. Lưu ý rằng không giống như một số ngôn ngữ khác, câu lệnh continue áp dụng cho
while
0 và hoạt động tương tự nhưwhile
3. Nếu bạn có mộtwhile
0 bên trong một vòng lặp và muốn tiếp tục đến lần lặp tiếp theo của vòng lặp bên ngoài, hãy sử dụngwhile
5
Ghi chú
Lưu ý rằng switch/case không so sánh lỏng lẻo
Trong ví dụ sau, mỗi khối mã là tương đương. Một sử dụng một loạt các câu lệnh if
và while
7, và câu lệnh kia sử dụng một câu lệnh while
0. Trong mỗi trường hợp, đầu ra là như nhau
Ví dụ #1 Cấu trúc while
0
while
00
while
01
while
02
while
03
Điều quan trọng là phải hiểu cách câu lệnh while
0 được thực thi để tránh mắc lỗi. Câu lệnh while
0 thực thi từng dòng một [thực ra là từng câu lệnh]. Ban đầu, không có mã nào được thực thi. Chỉ khi tìm thấy một câu lệnh _while
06 có biểu thức đánh giá thành một giá trị khớp với giá trị của biểu thức while
0 thì PHP mới bắt đầu thực thi các câu lệnh. PHP tiếp tục thực hiện các câu lệnh cho đến khi kết thúc khối while
0 hoặc lần đầu tiên nó nhìn thấy câu lệnh while
3. Nếu bạn không viết câu lệnh _while
3 ở cuối danh sách câu lệnh của trường hợp, PHP sẽ tiếp tục thực hiện các câu lệnh của trường hợp sau. Ví dụ
while
01
Ở đây, nếu $i bằng 0, PHP sẽ thực thi tất cả các câu lệnh echo. Nếu $i bằng 1, PHP sẽ thực thi hai câu lệnh echo cuối cùng. Bạn sẽ nhận được hành vi dự kiến ['i bằng 2' sẽ được hiển thị] chỉ khi $i bằng 2. Vì vậy, điều quan trọng là đừng quên các câu lệnh while
3 [mặc dù bạn có thể muốn tránh cố ý cung cấp chúng trong một số trường hợp nhất định]
Trong câu lệnh while
0, điều kiện chỉ được đánh giá một lần và kết quả được so sánh với từng câu lệnh while
06. Trong câu lệnh while
7, điều kiện được đánh giá lại. Nếu tình trạng của bạn phức tạp hơn một so sánh đơn giản và/hoặc nằm trong một vòng lặp chặt chẽ, thì while
0 có thể nhanh hơn
Danh sách câu lệnh cho một trường hợp cũng có thể trống, chỉ cần chuyển quyền kiểm soát vào danh sách câu lệnh cho trường hợp tiếp theo
while
07
Trường hợp đặc biệt là trường hợp while
08. Trường hợp này khớp với mọi thứ không khớp với các trường hợp khác. Ví dụ
while
09
Ghi chú. Nhiều trường hợp mặc định sẽ gây ra lỗi
while
30
Ghi chú. Về mặt kỹ thuật, trường hợp
while
08 có thể được liệt kê theo bất kỳ thứ tự nào. Nó sẽ chỉ được sử dụng nếu không có trường hợp nào khác phù hợp. Tuy nhiên, theo quy ước, tốt nhất là đặt nó ở cuối cùng như nhánh cuối cùng
Nếu không có nhánh while
06 khớp, và không có nhánh _while
08, thì sẽ không có mã nào được thực thi, giống như không có câu lệnh if
nào là đúng
Một giá trị trường hợp có thể được đưa ra dưới dạng một biểu thức. Tuy nhiên, biểu thức đó sẽ được đánh giá riêng và sau đó được so sánh lỏng lẻo với giá trị chuyển đổi. Điều đó có nghĩa là nó không thể được sử dụng để đánh giá phức tạp giá trị chuyển đổi. Ví dụ
while
35
while
36
while
37
Để so sánh phức tạp hơn, giá trị while
38 có thể được sử dụng làm giá trị chuyển đổi. Hoặc, cách khác, if
-while
00 khối thay vì while
0
while
02
while
03
while
37
Cú pháp thay thế cho các cấu trúc điều khiển được hỗ trợ với các công tắc. Để biết thêm thông tin, hãy xem Cú pháp thay thế cho cấu trúc điều khiển