Cấu trúc lặp trong PHP Loops

PHP Tutorial | by Học PHP

Trong thế giới lập trình, không hiếm khi bạn cần thực hiện cùng một công việc nhiều lần. Tưởng tượng bạn muốn in ra danh sách 100 sản phẩm từ cơ sở dữ liệu, gửi email xác nhận cho hàng ngàn người dùng mới, hoặc xử lý từng mục trong một file dữ liệu khổng lồ. Việc viết lặp đi lặp lại cùng một đoạn mã cho từng trường hợp không chỉ tốn thời gian, làm code của bạn dài dòng, khó đọc mà còn rất dễ mắc lỗi và khó quản lý khi có thay đổi.

Đây chính là lúc vòng lặp (loops) trở thành một công cụ không thể thiếu trong PHP. Vòng lặp cho phép bạn tự động thực thi một khối lệnh lặp đi lặp lại, cho đến khi một điều kiện cụ thể được đáp ứng. Nó giống như việc bạn ra lệnh cho máy tính "làm việc này liên tục cho đến khi hoàn thành mục tiêu X". Bằng cách tận dụng sức mạnh của các cấu trúc lặp, bạn có thể viết code ngắn gọn, hiệu quả và mạnh mẽ hơn rất nhiều. Hãy cùng tìm hiểu các loại vòng lặp chính trong PHP và cách chúng giúp bạn kiểm soát luồng chương trình một cách linh hoạt!

Tại Sao Cần Vòng Lặp?

Trong lập trình, có rất nhiều tình huống mà bạn cần thực hiện một công việc hoặc một tập hợp các lệnh lặp đi lặp lại nhiều lần. Nếu không có cơ chế hỗ trợ, việc này có thể biến mã của bạn thành một mớ hỗn độn dài dòng và rất khó quản lý.

Vấn Đề: Lặp Lại Code Thủ Công

Hãy tưởng tượng bạn đang viết một chương trình PHP và bạn cần:

  • In ra các số từ 1 đến 100.

  • Gửi một email thông báo đến 500 người dùng trong danh sách.

  • Hiển thị thông tin của tất cả 20 sản phẩm có trong giỏ hàng của khách.

Nếu không có vòng lặp, bạn sẽ phải làm gì? Có lẽ bạn sẽ phải viết đi viết lại cùng một đoạn mã cho mỗi lần thực hiện.

Ví dụ về vấn đề (code lặp lại thủ công):

<?php
// Tình huống: In ra các số từ 1 đến 5 mà không dùng vòng lặp
echo "Số: 1<br>";
echo "Số: 2<br>";
echo "Số: 3<br>";
echo "Số: 4<br>";
echo "Số: 5<br>";

// Tình huống: Gửi email cho 3 người dùng (giả định)
echo "Gửi email đến [email protected]<br>";
echo "Gửi email đến [email protected]<br>";
echo "Gửi email đến [email protected]<br>";
?>

Bạn có thấy vấn đề lớn ở đây không?

  • Mất thời gian: Phải gõ từng dòng, từng dòng một.

  • Dài dòng và khó đọc: Với hàng chục, hàng trăm hay hàng nghìn lần lặp, mã nguồn sẽ trở nên cực kỳ dài và rất khó để nắm bắt tổng thể.

  • Dễ sai sót: Khả năng gõ nhầm hoặc quên một dòng nào đó là rất cao.

  • Khó bảo trì: Nếu bạn muốn thay đổi một chi tiết nhỏ trong công việc lặp lại (ví dụ: thay vì "Số:" thành "Giá trị:"), bạn sẽ phải sửa đổi hàng trăm, hàng nghìn dòng code riêng lẻ. Điều này là ác mộng!

Giải Pháp: Vòng Lặp (Loops) – Tự Động Hóa Công Việc Lặp Lại

Để giải quyết triệt để vấn đề này, các ngôn ngữ lập trình (trong đó có PHP) cung cấp một cấu trúc điều khiển mạnh mẽ gọi là vòng lặp (loops).

Vòng lặp là một cơ chế cho phép bạn định nghĩa một khối lệnh (một đoạn code) mà bạn muốn nó được thực thi lặp đi lặp lại nhiều lần, cho đến khi một điều kiện cụ thể được đáp ứng (hoặc không còn đúng).

Khi bạn sử dụng vòng lặp, bạn chỉ cần viết đoạn code cần lặp một lần duy nhất. Vòng lặp sẽ chịu trách nhiệm "chạy" đoạn code đó theo số lần hoặc điều kiện bạn đã chỉ định.

Ví dụ về giải pháp (sử dụng vòng lặp):

<?php
echo "<h3>Sử dụng vòng lặp để in số từ 1 đến 5:</h3>";
for ($i = 1; $i <= 5; $i++) {
    echo "Số: " . $i . "<br>";
}

echo "<h3>Sử dụng vòng lặp để gửi email cho nhiều người dùng:</h3>";
$users = ["[email protected]", "[email protected]", "[email protected]"]; // Giả sử có 3 người dùng
foreach ($users as $email) {
    echo "Gửi email đến: " . $email . "<br>";
}
?>

Với vòng lặp, đoạn code trở nên ngắn gọn, dễ hiểu và dễ dàng thay đổi hơn rất nhiều. Nếu bạn muốn in đến số 1000, chỉ cần thay đổi số 5 thành 1000 trong điều kiện của vòng lặp for mà không cần viết thêm 995 dòng echo.

Ví Dụ Đời Thường: Công Việc Lặp Đi Lặp Lại

Hãy hình dung bạn có một khu vườn với 100 cái cây cần được tưới nước.

  • Cách thủ công: Bạn đi đến cây thứ nhất, tưới nước. Rồi đến cây thứ hai, tưới nước. Cứ thế cho đến cây thứ 100. (Tương tự như việc viết lặp lại code).

  • Sử dụng vòng lặp: Bạn đặt ra một quy tắc: "Đi từ cây đầu tiên, tưới nước cho cây đó, sau đó di chuyển sang cây tiếp theo, và cứ lặp lại cho đến khi không còn cây nào chưa được tưới." (Đây chính là nguyên lý của vòng lặp).

Rõ ràng, việc có một quy tắc (vòng lặp) để tự động hóa công việc lặp lại giúp bạn tiết kiệm thời gian, công sức và đảm bảo không bỏ sót cây nào. Trong lập trình, vòng lặp cũng mang lại những lợi ích tương tự.

Vòng Lặp là Gì?

Bạn đã biết lý do tại sao chúng ta cần vòng lặp: để tự động hóa các công việc lặp đi lặp lại. Giờ hãy cùng đi sâu vào định nghĩa và nguyên lý hoạt động của chúng.

Một vòng lặp (loop) trong lập trình là một cấu trúc điều khiển cho phép bạn thực thi một khối mã (một tập hợp các lệnh) nhiều lần (lặp đi lặp lại) mà không cần phải viết lại đoạn mã đó.

Nó giống như việc bạn ra lệnh cho máy tính "hãy làm công việc này, và cứ lặp lại nó cho đến khi tôi nói dừng lại."

Nguyên Lý Hoạt Động: "Kiểm Tra - Làm - Lặp Lại"

Nguyên lý cơ bản của hầu hết các vòng lặp là một chu trình lặp đi lặp lại:

  • Kiểm tra một điều kiện: Trước khi mỗi lần lặp diễn ra (hoặc sau khi lần lặp đầu tiên), vòng lặp sẽ kiểm tra một điều kiện logic (ví dụ: "biến X có nhỏ hơn 10 không?").

  • Thực thi khối mã: Nếu điều kiện đó là đúng (true), các lệnh bên trong thân vòng lặp sẽ được thực thi.

  • Quay lại kiểm tra: Sau khi khối mã đã chạy xong, vòng lặp sẽ quay lại bước 1 để kiểm tra điều kiện một lần nữa.

  • Dừng khi điều kiện sai: Chu trình này cứ tiếp diễn cho đến khi điều kiện trở thành sai (false). Khi đó, vòng lặp sẽ dừng lại, và chương trình sẽ tiếp tục thực thi các lệnh sau vòng lặp.

Các Thành Phần Chính của Vòng Lặp

Để một vòng lặp hoạt động hiệu quả và quan trọng nhất là không bị lặp vô hạn (infinite loop), nó thường cần có ba thành phần cơ bản:

Khởi tạo (Initialization):

  • Đây là bước bạn thiết lập một giá trị bắt đầu cho biến điều khiển vòng lặp. Biến này thường được dùng để theo dõi số lần lặp hoặc để kiểm soát điều kiện dừng.

  • Ví dụ: $i = 0; hoặc $counter = 1;

Điều kiện (Condition):

  • Đây là một biểu thức logic mà vòng lặp sẽ kiểm tra trước (hoặc sau) mỗi lần lặp.

  • Vòng lặp sẽ tiếp tục chạy chừng nào điều kiện này còn đúng. Khi nó trở thành sai, vòng lặp sẽ kết thúc.

  • Ví dụ: $i < 10; (chạy khi $i nhỏ hơn 10) hoặc $isLoggedIn == true;

Cập nhật (Increment/Decrement):

  • Đây là hành động thay đổi giá trị của biến điều khiển trong mỗi lần lặp.

  • Việc này đảm bảo rằng biến điều khiển sẽ tiến tới một trạng thái nào đó mà tại đó điều kiện sẽ trở thành sai, giúp vòng lặp cuối cùng kết thúc. Nếu thiếu bước này hoặc cập nhật sai, bạn có thể tạo ra một vòng lặp vô hạn.

  • Ví dụ: $i++; (tăng $i lên 1), $counter--; (giảm $counter xuống 1), hoặc $value = $value * 2;

Ví Dụ Cơ Bản: Vòng Lặp while với các thành phần

Hãy xem một ví dụ đơn giản của vòng lặp while để thấy rõ ba thành phần này.

<?php
echo "<h3>Ví dụ Vòng lặp `while` - In số từ 1 đến 3:</h3>";

// 1. Khởi tạo (Initialization): Đặt biến $count bắt đầu từ 1
$count = 1;

// 2. Điều kiện (Condition): Vòng lặp sẽ tiếp tục chạy chừng nào $count còn nhỏ hơn hoặc bằng 3
while ($count <= 3) {
    echo "Số hiện tại: " . $count . "<br>"; // Khối mã được thực thi

    // 3. Cập nhật (Increment): Tăng giá trị của $count lên 1 sau mỗi lần lặp
    $count++; // Dòng này đảm bảo $count cuối cùng sẽ lớn hơn 3 và vòng lặp kết thúc
}

echo "Vòng lặp đã kết thúc. Giá trị cuối cùng của \$count là: " . $count . "<br>";

/*
Output của đoạn code trên sẽ là:

Ví dụ Vòng lặp `while` - In số từ 1 đến 3:
Số hiện tại: 1
Số hiện tại: 2
Số hiện tại: 3
Vòng lặp đã kết thúc. Giá trị cuối cùng của $count là: 4
*/
?>

Giải thích ví dụ:

Khởi tạo: Biến $count được đặt là 1.

Lần lặp 1:

  • Kiểm tra điều kiện: $count <= 3 (tức là 1 <= 3) là true.

  • Thực thi: In "Số hiện tại: 1".

  • Cập nhật: $count trở thành 2.

Lần lặp 2:

  • Kiểm tra điều kiện: $count <= 3 (tức là 2 <= 3) là true.

  • Thực thi: In "Số hiện tại: 2".

  • Cập nhật: $count trở thành 3.

Lần lặp 3:

  • Kiểm tra điều kiện: $count <= 3 (tức là 3 <= 3) là true.

  • Thực thi: In "Số hiện tại: 3".

  • Cập nhật: $count trở thành 4.

Sau lần lặp 3:

  • Kiểm tra điều kiện: $count <= 3 (tức là 4 <= 3) là false.

  • Kết thúc: Vòng lặp dừng lại.

Hiểu rõ ba thành phần này là chìa khóa để bạn viết các vòng lặp chính xác và tránh được lỗi lặp vô hạn, điều rất quan trọng trong lập trình.

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

PHP cung cấp bốn loại vòng lặp chính, mỗi loại có mục đích và cách thức hoạt động riêng, giúp bạn linh hoạt kiểm soát luồng thực thi của chương trình.

Vòng lặp while

Mục đích: Vòng lặp while được dùng khi bạn muốn một khối mã được thực thi chừng nào một điều kiện còn đúng. Điều kiện này được kiểm tra trước mỗi lần lặp. Nếu điều kiện ban đầu đã sai, khối mã bên trong while sẽ không bao giờ được thực thi.

Cú pháp:

<?php
while (điều_kiện) {
    // Các lệnh sẽ được thực thi lặp đi lặp lại
    // Đảm bảo có logic để thay đổi 'điều_kiện' để tránh vòng lặp vô hạn!
}
?>

Cách hoạt động:

  • Vòng lặp kiểm tra điều_kiện bên trong dấu ngoặc đơn ().

  • Nếu điều_kiệntrue, các lệnh bên trong khối {} sẽ được thực thi.

  • Sau khi thực thi xong khối lệnh, PHP quay lại bước 1 để kiểm tra lại điều_kiện.

  • Quá trình này lặp lại cho đến khi điều_kiện trở thành false. Khi đó, vòng lặp sẽ dừng lại và chương trình tiếp tục thực thi các lệnh sau vòng lặp.

Ví dụ: In các số từ 1 đến 5.

<?php
echo "<h3>1. Vòng lặp `while`: In số từ 1 đến 5</h3>";

$count = 1; // Khởi tạo biến đếm

while ($count <= 5) { // Điều kiện: $count nhỏ hơn hoặc bằng 5
    echo "Số hiện tại: " . $count . "<br>";
    $count++; // Cập nhật: Tăng $count lên 1 sau mỗi lần lặp
}

echo "Vòng lặp `while` đã kết thúc. Giá trị cuối cùng của \$count: " . $count . "<br>";

/*
Output:
1. Vòng lặp `while`: In số từ 1 đến 5
Số hiện tại: 1
Số hiện tại: 2
Số hiện tại: 3
Số hiện tại: 4
Số hiện tại: 5
Vòng lặp `while` đã kết thúc. Giá trị cuối cùng của $count: 6
*/
?>

Vòng lặp do...while

Mục đích: Vòng lặp do...while tương tự như while, nhưng có một điểm khác biệt quan trọng: nó đảm bảo khối lệnh bên trong được thực thi ít nhất một lần, bởi vì điều kiện được kiểm tra sau mỗi lần lặp thay vì trước.

Cú pháp:

<?php
do {
    // Các lệnh sẽ được thực thi ít nhất một lần
    // Đảm bảo có logic để thay đổi 'điều_kiện' để tránh vòng lặp vô hạn!
} while (điều_kiện);
?>

Cách hoạt động:

  • Các lệnh bên trong khối do {} sẽ được thực thi ngay lập tức (ít nhất một lần).

  • Sau khi thực thi xong khối lệnh, PHP kiểm tra điều_kiện bên trong while ().

  • Nếu điều_kiệntrue, PHP quay lại và thực thi lại khối do {}.

  • Quá trình này lặp lại cho đến khi điều_kiện trở thành false, lúc đó vòng lặp dừng lại.

Ví dụ: Giả định nhập liệu từ người dùng cho đến khi nhập đúng.

<?php
echo "<h3>2. Vòng lặp `do...while`: Nhập mật khẩu (giả định)</h3>";

$password = ""; // Biến lưu mật khẩu người dùng nhập
$correctPassword = "secret"; // Mật khẩu đúng

do {
    // Giả định đây là nơi người dùng nhập mật khẩu
    // Trong thực tế sẽ có input từ form, ở đây ta sẽ gán giá trị để minh họa
    if (empty($password)) { // Lần đầu tiên chạy hoặc khi chưa đúng
        echo "Vui lòng nhập mật khẩu. (Mật khẩu đúng là 'secret')<br>";
        $password = "sai_mat_khau"; // Giả định người dùng nhập sai lần đầu
    } else if ($password == "sai_mat_khau") {
        echo "Mật khẩu sai. Vui lòng thử lại.<br>";
        $password = "secret"; // Giả định người dùng nhập đúng lần thứ hai
    }
    // Logic kiểm tra và thông báo ở đây...

} while ($password != $correctPassword); // Điều kiện: lặp lại chừng nào mật khẩu chưa đúng

echo "Mật khẩu đã đúng! Chào mừng bạn.<br>";

/*
Output:
2. Vòng lặp `do...while`: Nhập mật khẩu (giả định)
Vui lòng nhập mật khẩu. (Mật khẩu đúng là 'secret')
Mật khẩu sai. Vui lòng thử lại.
Mật khẩu đã đúng! Chào mừng bạn.
*/
?>

Giải thích: Khối do luôn chạy ít nhất một lần, cho phép bạn thực hiện hành động (ví dụ: yêu cầu nhập liệu) trước khi kiểm tra điều kiện để quyết định có lặp lại hay không.

Vòng lặp for

Mục đích: Vòng lặp for được sử dụng khi bạn biết trước số lần lặp hoặc khi bạn cần kiểm soát chặt chẽ quá trình lặp thông qua một biến đếm. Cả ba thành phần quan trọng (khởi tạo, điều kiện, cập nhật) đều được đặt gọn gàng trong cùng một dòng.

Cú pháp:

<?php
for (khởi_tạo; điều_kiện; cập_nhật) {
    // Các lệnh sẽ được thực thi
}
?>

Cách hoạt động:

  • khởi_tạo: Thực hiện một lần duy nhất khi vòng lặp bắt đầu (ví dụ: $i = 0;).

  • điều_kiện: Kiểm tra điều kiện. Nếu true, tiếp tục thực thi. Nếu false, thoát vòng lặp.

  • Thực thi khối lệnh: Các lệnh bên trong {} được chạy.

  • cập_nhật: Thực hiện hành động cập nhật biến (ví dụ: $i++) sau khi khối lệnh đã chạy xong.

  • Quay lại bước 2.

Ví dụ: In các số chẵn từ 2 đến 10.

<?php
echo "<h3>3. Vòng lặp `for`: In các số chẵn từ 2 đến 10</h3>";

// Khởi tạo $i = 2 (số chẵn đầu tiên)
// Điều kiện $i <= 10 (chạy đến số 10)
// Cập nhật $i += 2 (tăng $i lên 2 để lấy số chẵn tiếp theo)
for ($i = 2; $i <= 10; $i += 2) {
    echo "Số chẵn: " . $i . "<br>";
}

echo "Vòng lặp `for` đã kết thúc.<br>";

/*
Output:
3. Vòng lặp `for`: In các số chẵn từ 2 đến 10
Số chẵn: 2
Số chẵn: 4
Số chẵn: 6
Số chẵn: 8
Số chẵn: 10
Vòng lặp `for` đã kết thúc.
*/
?>

Vòng lặp foreach

Mục đích: Vòng lặp foreach được thiết kế đặc biệt để duyệt qua các phần tử của mảng hoặc đối tượng một cách dễ dàng và an toàn nhất. Bạn không cần phải quản lý các chỉ mục hoặc lo lắng về kích thước của mảng. Nó sẽ tự động lặp qua từng phần tử cho đến khi hết.

Cú pháp:

Có hai dạng chính:

  • Chỉ lấy giá trị:

foreach ($mảng_cần_duyệt as $giá_trị) {
    // Các lệnh sẽ được thực thi với mỗi $giá_trị trong $mảng_cần_duyệt
}

Lấy cả khóa và giá trị:

foreach ($mảng_cần_duyệt as $khóa => $giá_trị) {
    // Các lệnh sẽ được thực thi với $khóa và $giá_trị tương ứng
}

Cách hoạt động:

  • Vòng lặp lấy phần tử đầu tiên của $mảng_cần_duyệt.

  • Gán giá trị của phần tử đó vào biến $giá_trị (và khóa vào $khóa nếu bạn dùng cú pháp thứ hai).

  • Thực thi các lệnh bên trong khối {}.

  • Tự động chuyển sang phần tử tiếp theo của mảng và quay lại bước 2, cho đến khi không còn phần tử nào trong mảng.

Ví dụ 1: In tất cả các loại trái cây từ một mảng (chỉ lấy giá trị).

<?php
echo "<h3>4. Vòng lặp `foreach`: Duyệt danh sách trái cây</h3>";

$fruits = ["Táo", "Cam", "Xoài", "Nho"];

foreach ($fruits as $fruit) {
    echo "Tôi thích ăn: " . $fruit . "<br>";
}

echo "Duyệt mảng trái cây đã xong.<br>";

/*
Output:
4. Vòng lặp `foreach`: Duyệt danh sách trái cây
Tôi thích ăn: Táo
Tôi thích ăn: Cam
Tôi thích ăn: Xoài
Tôi thích ăn: Nho
Duyệt mảng trái cây đã xong.
*/
?>

Ví dụ 2: In thông tin chi tiết của học sinh từ một mảng kết hợp (lấy cả khóa và giá trị).

<?php
echo "<h3>4. Vòng lặp `foreach`: Duyệt thông tin học sinh</h3>";

$studentInfo = [
    "name" => "Nguyễn Văn An",
    "age" => 20,
    "major" => "Công nghệ thông tin",
    "gpa" => 3.5
];

foreach ($studentInfo as $key => $value) {
    echo "Thông tin " . $key . ": " . $value . "<br>";
}

echo "Duyệt thông tin học sinh đã xong.<br>";

/*
Output:
4. Vòng lặp `foreach`: Duyệt thông tin học sinh
Thông tin name: Nguyễn Văn An
Thông tin age: 20
Thông tin major: Công nghệ thông tin
Thông tin gpa: 3.5
Duyệt thông tin học sinh đã xong.
*/
?>

Điều Khiển Vòng Lặp (break và continue) trong PHP

Đôi khi, trong quá trình vòng lặp đang chạy, bạn có thể muốn thay đổi hành vi mặc định của nó: hoặc là dừng vòng lặp ngay lập tức, hoặc là bỏ qua một lần lặp cụ thể nào đó. PHP cung cấp hai từ khóa mạnh mẽ để làm điều này: breakcontinue.

Từ Khóa break

Mục đích: Từ khóa break dùng để dừng và thoát hẳn khỏi vòng lặp hiện tại ngay lập tức. Khi PHP gặp break, nó sẽ bỏ qua tất cả các lệnh còn lại trong vòng lặp và chuyển điều khiển chương trình đến dòng code ngay sau vòng lặp đó.

Khi nào nên dùng:

  • Khi bạn đã tìm thấy kết quả mình cần và không cần duyệt thêm các phần tử còn lại trong vòng lặp.

  • Khi một điều kiện lỗi hoặc không mong muốn xảy ra mà bạn muốn dừng toàn bộ quá trình lặp.

Ví dụ: Tìm kiếm một số trong danh sách và dừng lại khi tìm thấy.

<?php
echo "<h3>1. Từ khóa `break`: Tìm số 3 trong danh sách</h3>";

$numbers = [1, 5, 2, 8, 3, 7, 4];
$searchValue = 3;
$found = false;

for ($i = 0; $i < count($numbers); $i++) {
    echo "Đang kiểm tra số: " . $numbers[$i] . "<br>";

    if ($numbers[$i] == $searchValue) {
        echo "--> Đã tìm thấy số " . $searchValue . " tại vị trí: " . $i . "<br>";
        $found = true;
        break; // Dừng vòng lặp ngay lập tức!
    }
}

if (!$found) {
    echo "Số " . $searchValue . " không tìm thấy trong danh sách.<br>";
} else {
    echo "Vòng lặp đã kết thúc nhờ `break`.<br>";
}

/*
Output:
1. Từ khóa `break`: Tìm số 3 trong danh sách
Đang kiểm tra số: 1
Đang kiểm tra số: 5
Đang kiểm tra số: 2
Đang kiểm tra số: 8
Đang kiểm tra số: 3
--> Đã tìm thấy số 3 tại vị trí: 4
Vòng lặp đã kết thúc nhờ `break`.
*/
?>

Giải thích: Trong ví dụ này, khi $numbers[$i] bằng $searchValue (tức là 3), lệnh break; được thực thi. Vòng lặp for dừng lại ngay lập tức, và các số 7, 4 sau số 3 không được kiểm tra nữa. Chương trình nhảy thẳng đến dòng if (!$found) { ... }.

Từ Khóa continue

Mục đích: Từ khóa continue dùng để bỏ qua phần còn lại của lần lặp hiện tại và chuyển ngay sang lần lặp tiếp theo của vòng lặp. Nó không dừng toàn bộ vòng lặp mà chỉ bỏ qua một "lượt" cụ thể.

Khi nào nên dùng:

  • Khi bạn muốn bỏ qua một số trường hợp hoặc phần tử không mong muốn mà vẫn muốn tiếp tục xử lý các lần lặp khác.

  • Khi bạn cần lọc bỏ một số dữ liệu nhất định khỏi quá trình xử lý chính trong vòng lặp.

Ví dụ: In các số lẻ từ 1 đến 10 (bỏ qua số chẵn).

<?php
echo "<h3>2. Từ khóa `continue`: Chỉ in số lẻ từ 1 đến 10</h3>";

for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) { // Nếu $i là số chẵn
        echo "--> Bỏ qua số chẵn: " . $i . "<br>";
        continue; // Bỏ qua các lệnh còn lại trong lần lặp này và chuyển sang $i tiếp theo
    }
    // Dòng này chỉ được thực thi khi $i là số lẻ
    echo "Số lẻ được in: " . $i . "<br>";
}

echo "Vòng lặp đã hoàn tất việc in số lẻ.<br>";

/*
Output:
2. Từ khóa `continue`: Chỉ in số lẻ từ 1 đến 10
Số lẻ được in: 1
--> Bỏ qua số chẵn: 2
Số lẻ được in: 3
--> Bỏ qua số chẵn: 4
Số lẻ được in: 5
--> Bỏ qua số chẵn: 6
Số lẻ được in: 7
--> Bỏ qua số chẵn: 8
Số lẻ được in: 9
--> Bỏ qua số chẵn: 10
Vòng lặp đã hoàn tất việc in số lẻ.
*/
?>

Giải thích: Trong ví dụ này, khi $i là một số chẵn (ví dụ: 2, 4, 6...), điều kiện if ($i % 2 == 0)true. Lệnh continue; được thực thi, khiến PHP bỏ qua dòng echo "Số lẻ được in: " . $i . "<br>"; cho lần lặp đó và ngay lập tức chuyển sang kiểm tra giá trị $i tiếp theo.

Kết baì

Vòng lặp là một trong những khái niệm nền tảng và quan trọng nhất trong lập trình PHP, cũng như trong bất kỳ ngôn ngữ lập trình nào. Chúng cho phép chúng ta tự động hóa các tác vụ lặp đi lặp lại, biến những đoạn code dài dòng, dễ lỗi thành các khối lệnh ngắn gọn, hiệu quả và dễ quản lý.

Chúng ta đã khám phá bốn loại vòng lặp chính mà PHP cung cấp:

  • while: Lý tưởng khi bạn cần lặp chừng nào một điều kiện còn đúng, với việc kiểm tra điều kiện trước mỗi lần lặp.

  • do...while: Đảm bảo khối lệnh được thực thi ít nhất một lần, sau đó mới kiểm tra điều kiện để quyết định có lặp tiếp hay không.

  • for: Hoàn hảo khi bạn biết trước số lần lặp hoặc cần kiểm soát chặt chẽ quá trình khởi tạo, điều kiện và cập nhật trong cùng một dòng.

  • foreach: Công cụ không thể thiếu để duyệt qua các phần tử của mảng hoặc đối tượng một cách tiện lợi và an toàn.

Ngoài ra, chúng ta cũng đã tìm hiểu về các từ khóa breakcontinue, những công cụ mạnh mẽ giúp bạn kiểm soát linh hoạt hơn nữa luồng của vòng lặp, cho phép bạn dừng hẳn hoặc bỏ qua một lần lặp cụ thể khi cần thiết.

Bài viết liên quan