Home » Bài 6: Các loại Vòng lặp trong PHP (for, while, do while)

Bài 6: Các loại Vòng lặp trong PHP (for, while, do while)

Types of Loops in PHP (for, while, do-while)

by Tan Nguyen
13 minutes read

Ở bài trước mình đã giới thiều về các biểu thức điều kiện if else và cấu trúc rẽ nhánh switch case, các bạn nếu chưa xem có thể xem lại tại Bài 5: Biểu Thức Điều Kiện Trong PHP (Lệnh if, else, switch). Tiếp tục lộ trình học PHP căn bản thì qua bài này mình sẽ giới thiệu cho các bạn về vòng lặp (Loop) trong PHP nhé!

vong lap trong php

Vòng lặp trong PHP

Vòng lặp là gì?

Nói ngắn gọn thì vòng lặp được sử dụng để thực thi một đoạn code lặp đi lặp lại một số lần nhất định dựa trên giá trị trả về từ một điều kiện cho trước.

Các Loại Vòng Lặp Trong PHP

Khi lập trình đôi khi chúng ta sẽ cần chạy một đoạn code lặp đi lặp lại, lúc này sử dụng vòng lặp sẽ giúp chúng ta tránh việc phải thêm vào tập tin PHP những đoạn code giống nhau này nhiều lần.

Trong PHP chúng ta có các loại vòng lặp sau:

  • Vòng lặp while– Lặp một hành động dựa theo một điều kiện cụ thể mà nó trả về là true
  • Vòng lặp do...while– Lặp một hành động với số lần lặp nhất định
  • Vòng lặp for. – Lặp một hành động với số lần lặp nhất định
  • Vòng lặp foreach– Sử dụng để lặp các khoá và giá trị trong một dữ liệu mảng.

Vòng lặp for trong PHP

Thường bạn sử dụng vòng lặp này khi đã biết rõ trước số lần cần lặp lại là bao nhiêu.

Cú pháp

for ($bien_khoi_tao; $bieu_thuc_dieu_kien; $bieu_thuc_thay_doi_bien_khoi_tao)
{
    // phần câu lệnh thực thi vòng lặp
}
  • $bien_khoi_tao: là một câu lệnh chứa biến được gán giá trị ban đầu mà ta truyền vào trước khi chạy vòng lặp. Câu lệnh này chỉ thực hiện 1 lần duy nhất
  • $bieu_thuc_dieu_kien: là một biểu thức quan hệ nào đó nhằm mục đích xác định điều kiện thoát khỏi vòng lập.
  • $bieu_thuc_thay_doi_bien_khoi_tao: Là biểu thức xác định $bien_khoi_tao sẽ bị thay đổi như thế nào sau mỗi lần vòng lặp được lặp lại

Lưu ý: cú pháp khai báo vòng lặp là mỗi biểu thức phải cách nhua bằng dấu chấm phẩy ( ; )

Ví dụ

Xuất ra màn hình các số lần lượt tăng dần từ 0 đến 10.
<?php
for ($i = 0 ; $i <= 10 ; $i++){
    echo $i . '<br>';
}
?>
  • $i = 0 là biến khỏi tạo cho vòng lặp và có giá trị khởi tạo bằng 0
  • $i <= 10 là biểu thức điều kiện để dừng vòng lặp ( nếu $i <= 10 thì vòng lặp sẽ vẫn tiếp tục lặp, ngược lại nếu $i > 10 thì biểu thức sẽ hiểu là sai nên vòng lặp sẽ thoát
  • $i++ là biểu thức thay đổi biến khởi tại, sau mỗi lần lặp $i sẽ tăng lên 1

Ngoài ra khi khai báo cú pháp của vòng lặp thì trong thân của nó ta có thể thêm các biểu thức phụ bằng dấu phẩy để phâ biệt và ngăn cách chúng.

<?php 
for ($i = 0 , $j = 5 ; $i <= 10 ; $i++ , $j++)
{ 
    echo 'i = ' . $i . '<br>';
    echo 'j = ' . $j . '<br>'; // biến j sẽ xuất hiện theo thứ tự lần lượt cùng với biến i cho đến khi i>10 và kết thúc vòng lặp
} 
?>

Vòng lặp for lồng nhau

Nói một cách nôm na là có một vòng lặp cha sẽ bao một vòng lặp con khác bên trong nó. Ở mỗi lần lặp cho vòng lặp cha, vòng lặp con bên trong phải lặp hết điều kiện lặp của nó, sau đó mới lặp tiếp vòng lặp cha và cứ tiếp tục như vậy.

Như vậy ta sẽ thấy nó đang tuân thủ theo quy tắc phải thực hiện hết tất cả nội dung dòng lệnh bên trong vòng lặp rồi mới thực hiện vòng kế tiếp.

<?php 
$a=0;
for ($i = 0; $i < 10; ++$i)
{
    for ($j = 0; $j < 10; ++$j)
    {
        $a++;
        echo "Line $a =   " . $i*$j .'<br/>';
    }
}
?>

Với mỗi giá trị $i , chương trình thực hiện lệnh for($j=0;$j<10;++$j) 1 lần.

Bây giờ ta xét với vòng for($j=0;$j<10;++$j), và giá trị i là cố định, vòng for này sẽ thực hiện câu lệnh echo 10 lần.

Như vậy khi giá trị $i thay đổi 10 lần, với mỗi giá trị $i thì chương trình lại in câu lệnh echo 10 lần, như vậy tổng cộng là 100 lần in tất cả. Các bạn hãy code lại đoạn code cí dụ trên và chạy trên trình duyệt thử nhé!

Vòng lặp while trong PHP

Vòng lặp while cũng dùng để lặp dữ liệu như các vòng lặp khác nhưng ưu điểm của nó là có thể giải quyết những bài toán không biết chính xác số vòng lặp (một số bài toán thì for cũng có thể làm được) và cách sử dụng nó cũng rất đơn giản.

Cú pháp

while ($dieu_kien)
{
   // phần câu lệnh thực thi vòng lặp
}
  • $dieu_kien là đ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à ngược lại false thì sẽ dừng.
  • Suy ra nếu 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 là true.

Ví dụ

liệt kê các số từ 1 tới 10 bằng cách sử dụng vòng lặp while.

<?php
    $i = 1; //khởi tạo biến $i bằng 1
    while ($i <= 10) {
        echo $i++;
    }
?>

Trong đó $i = 1 là biến dùng để lặp. Biểu thức $i <= 10 là điều kiện lặp. Bài toán sẽ thực hiện lặp cho đến khi $i = 10, vậy ta sẽ có 10 lần lặp và mỗi lần lặp biến $i sẽ tăng thêm 1 giá trị, như vậy ta sẽ có kết quả là lần lượt các số từ 1 đến 10 : 12345678910

Vòng lặp do while trong PHP

Đây là một vòng lặp ngược lại với các vòng lặp từ trước đến giờ, các vòng lặp khác kiểm tra điều kiện trước rồi với thực thi câu lệnh, còn vòng lặp do-while thực thi câu lệnh 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 tương tự như vòng lặp while tuy nhiên đoạn mã lệnh trong vòng lặp do while luôn được thực thi ít nhất một lần.

Cú pháp

<?php
    do{
        // phần câu lệnh thực thi vòng lặp
    }while($bieu_thuc_dieu_kien); //phải có dấu chấm phẩu sau khi hết thúc dòng while
?>

Chú ý: Phải có dấu ; ở phía sau while không chương trình sẽ báo lỗi.

Ví dụ

Liệt kê các số từ 1 tới 10 bằng cách sử dụng vòng lặp do while.

<?php
$i = 1; //khởi tạo biến $i bằng 1
do {
    echo $i++; // cộng thêm 1 đơn vị sau mỗi lần lặp
} while ($i <= 10); // nếu $i lớn hơn 10 dừng vòng lặp
?>

Tương tự như vòng lặp while, $i = 1 là biến dùng để lặp. Biểu thức $i <= 10 là điều kiện lặp. Bài toán sẽ thực hiện lặp cho đến khi $i = 10, vậy ta sẽ có 10 lần lặp và mỗi lần lặp biến $i sẽ tăng thêm 1 giá trị, như vậy ta sẽ có kết quả là lần lượt các số từ 1 đến 10 : 12345678910

Tuy rằng nó có thể giải quyết những bài toán không biết chính xác số vòng lặp, nhưng cả vòng lặp while lẫn vòng lặp do while đều rất dễ vị lặp vô hạn. Vì vậy khi code bạn phải cẩn thận về logic của bài toán, đặt biệt là biểu thức điều kiện.

Vòng lặp While, Do while lồng nhau

Tương tự như vòng lặp for và các mệnh đề quan hệ như if else thì cả 2 vòng lặp while và do while đều có thể lồng nhau.

Ví dụ 1: vẽ tam giác vuông với vòng lặp while lồng nhau.

<?php
$i = 0;
while ($i <= 10) {
    $j = $i;
    while ($j <= 10) {
        echo "*";
        $j++;
    }
    echo "<br>";
    $i++;
}
?>

Ví dụ 2: vẽ tam giác vuông với vòng lặp do while lồng nhau.

<?php
$i = 0;
do {
    $j = $i;
    do {
        echo "*";
        $j++;
    } while ($j <= 10);
    echo "<br>";
    $i++;
} while ($i <= 10);
?>

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

Thông thường, đối với các bài toán khi đã biết rõ trước số lần cần lặp lại là bao nhiêu thì ta nên dùng vòng lặp for để thực hiện bài toán.

Còn đối với những bài toán không biết chính xác số vòng lặp thì ta nên dùng vòng lặp while hoặc do while.

Tuy nhiên ở một số bài toán, ta vẫn có thể sử dụng 3 vòng lặp trên để thực hiện theo 3 phương pháp khác nhau đều được. Tất cả là phụ thuộc vào kinh nghiệm của người lập trình, bạn sẽ là người quyết định nên dùng vòng lặp nào vào bài toán của bạn để nó chạy nhanh nhất và tối ưu hoá nhất cho chương trình của mình mà không phát sinh lỗi.

Kết luận:

Thực ra vẫn còn 1 loại vòng lặp nữa là vòng lặp foreach. Nhưng mình sẽ nói riêng về vòng lặp này ở bài viết tiếp theo các bạn nhé!

Vòng lặp là một kiến thức cơ bản mà bạn nên nắm vững để sau này thực hiện nhiều bài toán trong dự án của bạn. Vì thế nếu có thắc mắc gì các bạn cứ để lại comment ở bên dưới bài viết mình sẽ cố gắng giải đáp nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!

Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG
5/5 - (1 vote)

Related Posts

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More