1. Cấu trúc vòng lặp while
Cú pháp:
| 1 2 3 | while($condition) {    // dòng lệnh} | 
Trong đó $condition là điều kiện để dừng vòng lặp. Nếu $condition có giá trị false thì vòng lặp kết thúc, ngược lại vòng lặp sẽ tiếp tục lặp. Vòng lặp while sẽ lặp vô hạn nếu biểu thức điều kiện bạn truyền vào luôn luôn đúng.
Ví dụ: Dùng vòng lặp while trong php liệt kê các số từ 1 tới 10.
Để giải bài toán này ta có thể dùng vòng lặp for trong php để giải một cách dễ dàng.
| 1 2 3 | for($i= 1; $i<= 10; $i++){    echo$i. ' - ';} | 
Nhưng đề bài bắt buộc dùng vòng lặp while, vì thế các bạn xem bài giải sau:
| 1 2 3 4 5 | $i= 1; // Biến dùng để lặpwhile($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} | 
Giải thích:
- $i = 1là biến dùng để lặp.
- while ($i <= 10)là dòng bắt đầu vòng lặp, trong đó điều kiện lặp là- $i <= 10.
- echo $i . ‘ - ‘xuất ra màn hình biến- $ivà ký tự- -.
- $i++Tăng biến- $ilên 1 đơn vị, ví dụ hiện tại- $i = 1thì sau khi vòng lặp chạy thì biến- $i = 2, dòng này rất quan trọng vì nếu không có dòng này biến- $isẽ luôn luôn bằng 1 sau mỗi vòng lặp, như thế điều kiện vòng lặp sẽ thành - ($i <= 10)<=>- (1 <= 10)=> đúng => vòng lặp sẽ bị lặp vô hạn.
Lần lặp 1: Biến$i = 1, kiểm tra điều kiện thấy (1 <= 10) => true nên bên trong vòng lặp sẽ thực hiện và xuất ra màn hình “1 – “, đồng thời dòng $i++ sẽ tăng $i lên 1 => $i = 2 và quay trở lại vòng lặp để lặp vòng tiếp theo.
Lần lặp 2: Biến $i = 2, kiểm tra điều kiện thấy(2 <= 10) => true nên bên trong vòng lặp sẽ thực hiện và xuất ra màn hình “2 –  “, đồng thời dòng $i++ sẽ tăng $i lên 1 => $i = 3 và  quay trở lại vòng lặp để lặp vòng tiếp theo.
Tương tự  lần lặp 3, 4, 5, 6, 7, 8, 9: Sau vòng lặp thứ 9 biến $i sẽ có giá trị $i = 10.
Lần lặp 10: Biến $i = 10, kiểm tra điều kiện thấy (10 <= 10) => true nên bên trong vòng lặp sẽ thực hiện và xuất ra màn hình “10 – “, đồng thời dòng $i++ sẽ tăng biến $i lên 1 => $i = 11 và quay trở lại vòng lặp để lặp vòng tiếp theo.
Lần lặp 11: Biến $i = 11, kiểm tra điều kiện thấy (11 <= 10) => false. Không thỏa mãn điều kiện vì thế vòng lặp kết thúc (các dòng lệnh bên trong cũng không thực hiện nên không xuất hiện màn hình chuỗi “11 – “).
Kết thúc: Kết hợp các kết quả lại với nhau thì màn hình sẽ in ra dòng “1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – 10 – “.
Với vòng lặp for thì lặp theo một quy luật tăng, giảm đều thì đối với while không những lặp theo quy luật mà bạn có thể lặp theo một biểu thức.
Ví dụ:
| 1 2 3 4 5 6 | $i= 0;$j= 10;while($i< 100 && $j> 5){    $i++;    $j-= 2;} | 
Vòng lặp này sẽ thực hiện 3 lần.
Lần 1: $i = 0, $j = 10, kiểm tra điều kiện thấy ( 0 < 100 && 10 > 5 ) => true nên vòng lặp thực hiện tăng $i lên và giảm $j xuống 2. Lúc này $i = 1, $j = 8.
Lần 2: $i = 1, $j = 8, kiểm ta điều kiện thấy ( 1 < 100 && 8 > 5 ) => true nên vòng lặp thực hiện tăng $i lên 1 và giảm $j xuống 2. Lúc này $i = 2, $j = 6.
Lần 3: $i = 2, $j = 6, kiểm tra điều kiện thấy ( 2 < 100 && 6 > 5 ) => true nên vòng lặp thực hiện tăng $i lên 1 và giảm $j xuống 2. Lúc này $i = 3, $j = 4.
Lần 4: $i = 3, $j = 4, kiểm tra điều kiện thấy (3 < 100 && 4 > 5) => false, điều kiện sai nên vòng lặp kết thúc (vòng 4 không được thực hiện).
2. Cấu trúc vòng lặp do while
Vòng lặp while sẽ kiểm tra điều kiện trước rồi thực hiện câu lệnh bên trong vòng lặp, còn vòng lặp do while thì ngược lại sẽ thực hiện câu lệnh bên trong vòng lặp trước rồi mới kiểm tra điều kiện. Nếu điều kiện đúng thì sẽ thực hiện tiếp vòng lặp kế tiếp, nếu điều kiện sai thì sẽ dừng vòng lặp. Vòng lặp do while trong php 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.
Cú pháp:
| 1 2 3 | do{    // dòng lệnh} while($condition); | 
Đừng quên đặt dấu chấm phẩy ; sau mệnh đề while nhé.
Ví dụ:
| 1 2 3 4 5 | $i= 1;do{    echo$i;    $i++;}while($i<= 10); | 
Chương trình này thực hiện xuất ra màn hình các số từ 1 tới 10. Giải thích tương tự như while, ở mỗi bước lặp sẽ xuất ra màn hình biến $i, sau đó tăng $i lên 1, và cuối cùng kiểm tra điều kiện nếu ($i <= 10) đúng thì sẽ lặp vòng tiếp theo, ngược lại sẽ dừng vòng lặp.
Ví dụ:
| 1 2 3 4 5 | $i= 1;do{    echo$i;    $i++;}while($i< 1); | 
Vòng lặp này sẽ lặp 1 lần tại vì nó thực hiện do xong rồi mới kiểm tra điều kiện while. Đây là lý do tại sau tôi nói vòng lặp while luôn thực hiện ít nhất 1 lần.
Note: Cũng như lưu ý ở vòng lặp while, vòng lặp do while trong php rất dễ bị lặp vô hạn, vì thế hãy cẩn thận khi sử dụng nó.
3. Một bài toán có thể giải ở cả ba vòng lặp không?
Câu trả lời là có thể có và có thể không. Như với ví dụ ở trên thì với vòng lặp for ta không thể thực hiện được.
| 1 2 3 4 5 6 | $i= 0;$j= 10;while($i< 100 && $j> 5){    $i++;    $j-= 2;} | 
Ví dụ: In ra màn hình các số từ 100 đến 200;
Dùng vòng lặp for:
| 1 2 3 | for($i= 100; $i<= 200; $i++){    echo$i;} | 
Dùng vòng lặp while:
| 1 2 3 4 5 | $i= 100;while($i<= 200){    echo$i;    $i++; // Tăng $i lên 1} | 
Dòng vòng lặp do while:
| 1 2 3 4 5 | $i= 100;do{    echo$i;    $i++;} while($i<= 200); | 
4. Khi nào thì sử dụng vòng lặp for, while, do while
Vấn đề này tùy vào kinh nghiệm của từng người. nhưng có một điểm chung để ta có thể xác định được là:
Những bài toán lặp theo một trình tự nhất định, các bước lặp cách đều nhau (1,2,3,4) và phải biết được tổng số lần lặp thì ta dùng vòng lặp for.
Ngược lại những bài toán khác thì ta dùng vòng lặp while hoặc do … while
5. Vòng lặp while, do while lồng nhau
Cũng như vòng lặp for và mệnh đề if, vòng lặp while và vòng lặp do while có thể lồng nhau để giải quyết bài toán của chúng ta.
Ví dụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | $i= 1;while($i< 10){    $j= $i;    while($j< 10)    {        echo$j;        $j++;    }    echo'';    $i++;} | 
Vòng lặp này sẽ xuất ra màn hình một hình tam giác với các con số:
123456789
23456789
3456789
456789
56789
6789
789
89
9
Tổng số lần lặp chính là bằng tích số lần lặp của 2 vòng lặp cộng thêm số lần lặp của vòng lặp cha. Ví dụ vòng lặp 1 lặp 10 lần, vòng lặp 2 lặp 10 lần thì tổng số vòng lặp sẽ là 10 x 10 + 10 = 110 lần. Vì thế chi phí để lặp lồng nhau rất cao.
6. Vòng lặp while, do while trong việc truy xuất mảng
Tương tự như vòng lặp for, vòng lặp while và do while có thể dùng để truy xuất các phần tử trong mảng chỉ mục.
Ví dụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // Cho Danh Sách Năm$nam= array(    1990,    1991,    1992,    1993,    1994,    1995); // Xuất theo cách thông thườngecho$nam[0];echo$nam[1];echo$nam[2];echo$nam[3];echo$nam[4];echo$nam[5]; // Dùng while$i= 0;while($i<= 5){    echo$nam[$i];    $i++; // Tăng biến $i} // Dùng do .. while$i= 0;do{    echo$nam[$i];    $i++;}while($i<=5); | 
Theo:freetuts.net
 
                                       


 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
															
							 
                             
             
            
 Vietnamese
 Vietnamese Afrikaans
 Afrikaans Albanian
 Albanian Amharic
 Amharic Arabic
 Arabic Armenian
 Armenian Azerbaijani
 Azerbaijani Basque
 Basque Belarusian
 Belarusian Bengali
 Bengali Bosnian
 Bosnian Bulgarian
 Bulgarian Catalan
 Catalan Cebuano
 Cebuano Chichewa
 Chichewa Chinese (Simplified)
 Chinese (Simplified) Chinese (Traditional)
 Chinese (Traditional) Corsican
 Corsican Croatian
 Croatian Czech
 Czech Danish
 Danish Dutch
 Dutch English
 English Esperanto
 Esperanto Estonian
 Estonian Filipino
 Filipino Finnish
 Finnish French
 French Frisian
 Frisian Galician
 Galician Haitian Creole
 Haitian Creole Georgian
 Georgian German
 German Greek
 Greek Gujarati
 Gujarati Hausa
 Hausa Hawaiian
 Hawaiian Hebrew
 Hebrew Hindi
 Hindi Hmong
 Hmong Hungarian
 Hungarian Icelandic
 Icelandic Igbo
 Igbo Indonesian
 Indonesian Irish
 Irish Italian
 Italian Japanese
 Japanese Javanese
 Javanese Kannada
 Kannada Kazakh
 Kazakh Khmer
 Khmer Korean
 Korean Kurdish (Kurmanji)
 Kurdish (Kurmanji) Kyrgyz
 Kyrgyz Lao
 Lao Latin
 Latin Latvian
 Latvian Lithuanian
 Lithuanian Luxembourgish
 Luxembourgish Macedonian
 Macedonian Malagasy
 Malagasy Malay
 Malay Malayalam
 Malayalam Maltese
 Maltese Maori
 Maori Marathi
 Marathi Mongolian
 Mongolian Myanmar (Burmese)
 Myanmar (Burmese) Nepali
 Nepali Norwegian
 Norwegian Pashto
 Pashto Persian
 Persian Polish
 Polish Portuguese
 Portuguese Punjabi
 Punjabi Romanian
 Romanian Russian
 Russian Samoan
 Samoan Scottish Gaelic
 Scottish Gaelic Sinhala
 Sinhala Serbian
 Serbian Sesotho
 Sesotho Shona
 Shona Sindhi
 Sindhi Slovenian
 Slovenian Slovak
 Slovak Somali
 Somali Spanish
 Spanish Sundanese
 Sundanese Swahili
 Swahili Swedish
 Swedish Tajik
 Tajik Tamil
 Tamil Telugu
 Telugu Thai
 Thai Turkish
 Turkish Ukrainian
 Ukrainian Urdu
 Urdu Uzbek
 Uzbek Welsh
 Welsh Xhosa
 Xhosa Yiddish
 Yiddish Yoruba
 Yoruba Zulu
 Zulu