post-image

Vòng lặp trong PHP

Tổng quan

Vòng lặp chúng ta có thể hiểu là một tính năng tạo ra một chu kỳ thực hiện một kịch bản nào đó với ngôn ngữ lập trình. Ví dụ thay vì chúng ta phải tự hiển thị 1000 số thì ta có thể sử dụng loop để nó lặp lại và in ra từ 1 đến 1000.

Tại sao phải sử dụng đến vòng lặp

Khi ta cố gắng lặp lại code nhiều lần, bằng cách gõ lại hoặc copy và paste một dòng hoặc một đoạn code. Khi đó, sẽ có khả năng xảy ra các lỗi về cú pháp và đó có thể là nguyên nhân gây ra lỗi trong chương trình do những sơ suất khi copy paste và gõ lại đoạn code. Do đó chúng ta nên sử dụng đến vòng lặp để hạn chế trường hợp xảy ra lỗi.

Các loại vòng lặp trong PHP

Trong PHP, hiện tại chúng ta có thể sử dụng 4 loại loop khác nhau đó là for(), while() và foreach(). Mỗi kiểu vòng lặp sẽ có cách làm việc khác nhau, cụ thể:

  • while – Lặp một hành động dựa theo một điều kiện cụ thể mà nó trả về là đúng.
  • do while – Loại này tương tự giống như while, nhưng nó sẽ thực hiện ít nhất một lần dù cho điều kiện trả về là false.
  • for – Lặp một hành động với một số lần lặp nhất định. Ví dụ nếu muốn in từ số 1 đến 10 thì ta sẽ dùng vòng lặp này vì ta có thể đặt điều kiện cho nó dừng lại sau khi lặp 10 lần.
  • foreach – Sử dụng để lặp các khoá và giá trị trong một dữ liệu mảng. Cái này cũng được sử dụng rất nhiều khi làm việc với mảng.

Vòng lặp While

while là loại sẽ tiếp tục chạy miễn là điều kiện của nó là đúng.

Cú pháp:

while (/*conditional*/) {
  #code block
}

Ví dụ in ra số từ 1 đến 10:

$count = 1;
while ($count < 11)
{
  echo "The count is: " . $count . "\n";
  $count += 1;
}

Lần đầu tiên khi biên dịch đoạn code trên nó sẽ kiểm tra điều kiện. Nếu nó kiểm tra điều kiện là true, code sẽ được thực thi. Sau đó, nó sẽ kiểm tra lại điều kiện và nếu vẫn true, thực thi lại đoạn code. Nó tiếp tục theo cách này cho đến khi điều kiện là false. Nó sẽ kiểm tra điều kiện rồi mới lặp

Như ví dụ trên, đoạn code này được thực thi trong khi điều kiện trong ngoặc ($count < 11) vẫn đúng. $count bắt đầu ở giá trị 1 vì vậy điều kiện là đúng trong lần lặp đầu tiên.

Do While

Vòng lặp này thì cũng tương tự while, nhưng nó sẽ thực hiện các đoạn code trước rồi mới kiểm tra điều kiện sau.

do {
    #code block
} while (/*conditional*/);

Áp dụng vào ví dụ như trên:


$count = 0;
do {
  echo "The count is: " . $count . "\n";
  $count += 1;
} while ($count <= 10);

Nó sẽ bắt đầu từ giá trị $count = 0, sau đó nó sẽ in đầu ra và tăng thêm cho biến $count 1 đơn vị. Tiếp theo nó sẽ được xét điều kiện và nó sẽ tiếp tục chạy miễn sao $count nhỏ hơn hoặc bằng 10.

For

Để sử dụng vòng lặp for, chúng ta sẽ có cấu trúc code như sau:

for(initialization; condition; increment){
    // Code to be executed
}

Các tham số của nó có ý nghĩa như sau:

  • initialization – biến khởi tạo
  • condition – điều kiện
  • increment – bộ đếm vòng lặp

Ví dụ bên dưới định nghĩa một vòng lặp bắt đầu từ $count = 1, nó sẽ tiếp tục chạy cho đến khi giá trị biến $count nhỏ hơn 11. Biến $count sẽ tăng dần sau mỗi một lần lặp.


for ($count = 1; $count < 11; $count++)
{
  echo "The count is: " . $count . "\n";
}

Foreach

Vòng lặp này ta sẽ lặp các giá trị và khoá trong mảng, chúng ta không có gắn điều kiện hay số lần lặp gì cả mà nó sẽ lặp khi nào hết mảng thì thôi.

foreach ($array as $value) {
  #code block
}

Ví dụ như in ra các phần tử trong mảng sau $array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];


$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
foreach ($array as $item {
  echo "The number is: " . $item . "\n";
}

Để lấy giá các key của từng phần tử trong mảng thì ta sẽ sử dụng syntax mở rộng sau:

foreach ($array as $key => $value) {
  #code block
}

Break và Continue

Trong PHP, break có thể được sử dụng để chấm dứt việc thực hiện một vòng lặp for, foreach, while hoặc do-while. Nhược điểm của việc sử dụng quá nhiều break thì sẽ khiến việc đọc logic code sẽ khó đọc hơn.

// We can use the break statement to end the loop once the count reaches 4
$count = 1;
while ($count < 10)
{
  echo "The count is: " . $count . "\n";
  if ($count === 4) {
    break;
  }
  $count += 1;
}

Còn đối với continue được sử dụng để chấm dứt việc thực hiện một lần lặp trong một vòng lặp for, foreach, while hoặc do-while. Khi đó nó sẽ tiếp tục được chạy cho lần lặp tiếp theo.

// This code counts from 1 to 10 but skips over 5
$count = 1;
while ($count < 11)
{
  if ($count === 5) {
    $count += 1;
    continue;
  }
  echo "The count is: " . $count . "\n";
  $count += 1;
}

Từ khóa continue tương tự như break nhưng nó chỉ kết thúc sớm lần lặp hiện tại chứ không phải toàn bộ vòng lặp.

Leave a Reply

Your email address will not be published. Required fields are marked *