1. Vòng lặp trong PHP là gì?

Trong cuộc sống ta luôn có những hành động lặp đi lặp lại như: ăn cơm, chơi game,… Ta sẽ thực hiện đi thực hiện lại hành động đó thì sẽ được coi là 1 vòng lặp. Trong lập trình cũng vậy, đôi lúc ta phải thực hiện đi thực hiện lại 1 hành động cho đến khi thỏa mãn mới dừng lại. Ở đây ta sẽ hiểu là chương trình sẽ được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó.

VD: Nếu tôi muốn in ra màn hình 1000 câu lệnh “Lập trình từ đầu” thì thay vào việc ta gõ 1000 câu lệnh echo “<p>Lập trình từ đầu</p>”; ta chỉ cần thực hiện 1 vòng lặp ngắn gọn là xong!

<?php
    for($i = 1; $i <= 1000; $i++){
        echo "<p>Lập Trình Từ Đầu</p>";
    }
?>

Vòng lặp giúp ta tiết kiệm rất nhiều thời gian và công sức trong việc thực hiện hành động nào đó nhiều lần liên tiếp.

Trong PHP, vòng lặp được chia làm 4 loại:

  • Vòng lặp for (ví dụ trên)
  • Vòng lặp foreach
  • Vòng lặp while
  • Vòng lặp do while

Bài này ta sẽ tìm hiểu về vòng lặp for và foreach.

2. Vòng lặp for trong PHP

Đây là loại vòng lặp ta sẽ sử dụng rất nhiều trong lập trình. Vòng lặp này sẽ lặp cho ta qua khối mã số lần mà ta đã chỉ định trước. Nguyên lý của nó ta sẽ hiểu qua sơ đồ sau:

Cú pháp của vòng lặp for:

for (bienkhoitao; dieukienthucthi; buocnhay) { 
 // code...
}

Bienkhoitao: là giá trị ban đầu ta khởi tạo cho vòng lặp, hoặc là một biến có giá trị có sẵn mà ta truyền vào cho nó trước. Lệnh này được thực hiện duy nhất 1 lần.

Dieukienthucthi: là điều kiện mà nếu đúng(bienkhoitao) thì sẽ thực hiện vòng lặp, và sẽ thoát khỏi vòng lặp nếu sai. Nếu bạn không có điều kiện này thì vòng lặp sẽ lặp lại vô hạn.

Buocnhay: ở đây nó chính là một biểu thức để bienkhoitao bị sai rồi kết thúc vòng lặp.

Ta sẽ dùng ngay ví dụ ở trên để hiểu rõ hơn nhé

<?php
    for($i = 1; $i <= 1000; $i++){
        echo "<p>Lập Trình Từ Đầu</p>";
    }
?>

$i = 1 : biến khởi tạo mà ta tạo cho vòng lặp

$i <= 1000 : điều kiện nếu $i của ta nhỏ hơn hoặc bằng 1000 thì vẫn tiếp tục chạy vòng lặp, lớn hơn sẽ dừng vòng lặp.

$i++ : sau mỗi lần lặp thì giá trị của $i sẽ được tự động tăng thêm 1 – gọi là bước nhảy của $i.(đến khi $i = 1000 thì $i++ bằng 1001 sai điều kiện dẫn đến kết thúc vòng lặp)

Lưu ý

  • Tùy vào từng bài toán mà bước nhảy sẽ tăng hoặc giảm, các bạn chỉ cần áp dụng là được.
  • Đừng quá gò bó theo khuôn mẫu việc biến là mấy hay điều kiện là gì.
  • Hãy chỉ quan tâm đến việc bạn thiết kế ra vòng lặp hoạt động đúng số lần lặp mà các bạn muốn.

VD: Ta sẽ in bảy câu “lập trình từ đầu” ra màn hình bằng vòng lặp for với một số cách khác nhau

C1:

for($i = 0; $i < 7; $i++){
    echo "<p>Lập Trình Từ Đầu</p>";
}

C2:

for($i = 1; $i <= 7; $i++){
    echo "<p> Lập Trình Từ Đầu </p>";
}

C3:

for($i = 5; $i < 12; $i++){
    echo "<p> Lập Trình Từ Đầu </p>";
}

C4:

for($i = 9; $i > 2; $i--){
    echo "<p> Lập Trình Từ Đầu </p>";
}

C5:

for($i = 0; $i < 13; $i = $i + 2){
    echo "<p> Lập Trình Từ Đầu </p>";
}

3. Vòng lặp for lồng nhau

Cũng tương tự như if else, vòng lặp for lồng nhau chỉ là nâng cao của vòng lặp for để giúp số lần lặp tăng theo cấp số nhân để giải bài toán nhanh hơn.

Vòng lặp con được đặt vào vòng lặp cha, nếu cha đúng thì con mới được thực hiện và ngược lại.

Bên trong vòng lặp cha có thể chưa các mã lệnh khác đều được.

Cú pháp cơ bản:

for(biểu thức 1; biểu thức 2; biểu thức 3){
    for(biểu thức 1; biểu thức 2; biểu thức 3){
        //Đoạn mã mà bạn muốn được thực thi
    }
}

Ví dụ 1: hiển thị dãy số từ 1 đến 50 bằng vòng lặp for lồng nhau

<?php  
    $number = 1;
    for($i = 0; $i < 10; $i++){
        for($j = 0; $j < 5; $j++){
            echo "<p>" . $number . "</p>";
            $number++;
        }
   }
 ?>

Ví dụ 2: Dùng vòng lặp for lồng nhau để vẽ ra một tam giác

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

4. Vòng lặp for kết hợp với mảng

Ta có thể dùng vòng lặp for kết hợp với mảng để truy xuất dữ liệu của mảng.

VD:

<?php
    $sinhvien = array("Nam", "Son", "Thanh", "Ha");
    for($i = 0; $i < count($sinhvien); $i++){
        echo $sinhvien[$i]."<br>";
    }
?>

Ta cũng có thể kết hợp vòng lặp for với nhiều điều kiện hay vòng lặp khác mà tôi sẽ nói thêm ở những bài sau.

5. Vòng lặp foreach

Vòng lặp foreach thường được sử dụng để lặp các mảng, object và được sử dụng để lặp qua từng cặp khóa, giá trị của mảng.

Cú pháp:

  foreach ($array as $key => $value){
    // Các dòng lệnh
}

Hoặc

foreach ($array as $value){
    // Các dòng lệnh
}

Trong đó:

  • $array là mảng cần lặp
  • $key là các key của mảng
  • $value là giá trị của phần tử đó ở vị trí $key.

VD:

<?php
$web = array('lập','trình','từ','đầu');
//Dùng foreach xuất ra 
foreach ($web as $key => $value){
    echo $value;
}
?>

Vòng lặp foreach sẽ tự động lặp qua các phần tử trong mảng đến phần tử cuối cùng của mảng. Ta có thể thay đổi $key và $value là một cái tên bất kỳ nhé chứ nó không phải là bắt buộc đâu. Ví dụ vẫn là bài trên nhé đây là một cách khác:

<?php
$web = array('lập','trình','từ','đầu');
//Dùng foreach xuất ra 
foreach ($web as $muc => $giatri){
    echo $giatri;
}
?>

Ta có thể dùng cú pháp 2 để làm bài toán này:

<?php
    $web = array('lập','trình','từ','đầu'); 
    foreach ($web as $value){
        echo $value;
    }
?>