Chủ đề nổi bật

Bài 08: Vòng lặp while và do while trong php

Khác với vòng lặp for trong php, vòng lặp while và vòng lặp do while lặp đối với những bài toán không xác định được số lần lặp, còn vòng lặp ...

Khác với vòng lặp for trong php, vòng lặp while và vòng lặp do while lặp đối với những bài toán không xác định được số lần lặp, còn vòng lặp for thì biết được số lần lặp mới lặp được. Tuy nhiên có những bài toán có thể dùng cả 3 vòng lặp for, while và do while để giải. Nhưng để làm được thì trước tiên ta phải tìm hiểu các khái niệm vòng lặp while và do while trong php.

  • Cấu trúc vòng lặp while
  • Cấu trúc vòng lặp do while
  • Khi nào sử dụng vòng lặp for, while và do while
  • Vòng lặp  while và do while trong việc truy xuất mảng

1. Cấu trúc vòng lặp while

Cú pháp:

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.

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:

$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
}

Giải thích:

  • $i = 1 là 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 $i và ký tự  -.
  • $i++  Tăng biến $i lên 1 đơn vị, ví dụ hiện tại $i = 1 thì 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 $i sẽ 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ụ:

$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ốn 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

BẢNG MÃ KÍCH HOẠT KHÓA HỌC RẤT RẺ

Mình đã sưu tầm các mã giám giá rất rẻ và đăng nó ơ trong bài viết này, bạn hãy vào tham khảo để xem cần kháo nào thì hãy chọn cho riêng mình nhé, Lưu ý la chỉ có tại code24h.com, bạn sẽ không thể tìm thấy ở chỗ khác.

Xem Ngay

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: 

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

Đừng quên đặt dấu chấm phẩy ; sau mệnh đề while nhé.

Ví dụ:

$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ụ:

$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.

$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:

for ($i = 100; $i <= 200; $i++){
    echo $i;
}

Dùng vòng lặp while:

$i = 100;
while ($i <= 200){
    echo $i;
    $i++; // Tăng $i lên 1
}

Dòng vòng lặp do while:

$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ụ:

$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ụ:

// Cho Danh Sách Năm
$nam = array(
    1990,
    1991,
    1992,
    1993,
    1994,
    1995
);
 
// Xuất theo cách thông thường
echo $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);

7. Lời kết

Trong bài học này các bạn đã được học vòng lặp while và do while, vậy tổng cộng chúng ta đã được học ba vòng lặp đó là if, whiledo while.  Trong bài tiếp theo chúng ta sẽ tìm hiểu một vòng lặp chuyên dùng xử lý mảng trong php, đó là vòng lặp foreach.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan
Mới nhất

Danh sách các múi giờ (Timezones) trong PHP

- Múi giờ (timezones) thường được sử dụng trong các hàm xử lý ngày tháng & thời gian. - Dưới đây là danh sách đầy đủ các múi giờ được hỗ trợ trong ngôn ngữ lập trình PHP. 1) Africa Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers 2) America ...

Các hàm dùng để quản lý thư mục trong PHP

Hàm Mô tả chức năng chdir() chroot() closedir() dir() getcwd() opendir() readdir() rewinddir() scandir() ...

Danh sách tất cả các hàm xử lý chuỗi trong PHP

Hàm Mô tả chức năng addcslashes() Thêm một dấu gạch chéo ngược () phía trước các ký tự được chỉ định addslashes() Thêm một dấu gạch chéo ngược () phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi bin2hex() Chuyển một chuỗi các ký tự ...

Cách khai báo và sử dụng hàm (function) trong PHP

1) Hàm là gì !? - Hàm là một tập hợp gồm nhiều câu lệnh, các câu lệnh này được sắp xếp theo một thứ tự xác định để xây dựng thành một chức năng cụ thể và mỗi hàm sẽ có một cái tên. Ví dụ Đoạn mã bên dưới, chúng ta có một hàm tên là GioiThieuBanThan. Hàm này gồm ba câu lệnh với ...

Vòng lặp for & foreach trong PHP

1) Vòng lặp là gì !? - Trong PHP, vòng lặp là một loại cú pháp giúp ta lặp lại việc thực thi một đoạn mã nhiều lần. - Ví dụ, nếu tôi muốn hiển thị lên màn hình 100 dòng chữ "Lập Trình Web" thì đáng ra phải gõ 100 câu lệnh echo "<p>Lập Trình Web</p>"; . Tuy nhiên, với việc sử ...

Lệnh điều kiện if ... else trong PHP

"Nếu bạn học tốt môn lập trình web thì bạn sẽ có thể thiết kế được website" - Câu trên được chia làm hai vế: Vế thứ nhất: "Nếu bạn học tốt môn lập trình web" Vế thứ hai: "Bạn sẽ có thể thiết kế được website" - Trong cuộc sống, ta gọi vế thứ nhất là điều kiện, vế thứ hai là một điều ...

Danh sách tất cả các hàm xử lý mảng trong PHP

Hàm Mô tả chức năng array_change_key_case Đổi tên của tất cả các phần tử trong mảng về dạng chữ in hoa hoặc chữ thường array_chunk array_column array_combine array_count_values array_diff array_diff_assoc array_diff_key ...

Danh sách các hàm xử lý tập tin hệ thống trong PHP

Hàm Mô tả chức năng basename() Trả về tên tập tin từ một đường dẫn chgrp() Thay đổi nhóm người dùng của tập tin được chỉ định chmod() Thiết lập quyền hạn của các nhóm người dùng trên tập tin được chỉ định chown() Thay đổi chủ sở hữu của một tập tin copy() Sao ...

Danh sách tất cả các hàm xử lý ngày tháng trong PHP

Hàm Mô tả chức năng checkdate Kiểm tra xem một ngày được xác định có hợp lệ hay không date date_add date_create date_create_from_format data_create_immutable data_create_immutable_from_format date_date_set date_default_timezone_get ...

Vòng lặp while & do while trong PHP

1) Vòng lặp while trong PHP - Trước khi nêu khái niệm "vòng lặp while là gì?" thì tôi có một ví dụ để giúp bạn có thể hình dung sơ qua về vòng lặp while. - Bạn đưa ra một điều kiện, nếu điều kiện đó là sai thì kết thúc, còn nếu đúng thì một đoạn mã sẽ được thực thi và bạn tiếp tục quay ...