Hướng dẫn sử dụng lệnh continue trong PHP
Ngoài lệnh break dùng để kết thúc
vòng lặp, còn tồn tại lệnh
continue, dùng để bắt đầu một lượt lặp mới
của vòng lặp. Lệnh này đôi khi có thể
hữu ích để đơn giản hóa mã, mặc dù hầu như
luôn có thể giải quyết bài toán mà không cần đến nó. Hãy cùng
xem một ví dụ thực tế.
Giả sử chúng ta có một mảng số. Hãy
duyệt nó bằng vòng lặp và với những số chia hết
cho 2, chúng ta sẽ tính bình phương và in
ra màn hình, còn những số chia hết cho 3,
chúng ta sẽ tính lập phương và in ra màn hình.
Đây là giải pháp cho bài toán đã mô tả:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
echo $res;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
echo $res;
}
}
?>
Như bạn thấy, dòng lệnh echo $res
lặp lại hai lần. Hãy đưa nó
ra ngoài if, như thế này:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
}
echo $res; // đã đưa việc in ra ngoài điều kiện
}
?>
Tuy nhiên, bây giờ script của chúng ta hoạt động hơi
khác: kết quả là ngay cả đối với các phần tử thông thường,
không được xử lý thông qua if của chúng ta, cũng sẽ
thực hiện việc in biến $res
ra màn hình, điều mà theo yêu cầu của bài toán chúng ta
không cần.
Hãy sửa vấn đề này bằng cách thêm vào if của chúng ta
một điều kiện else nữa, điều kiện này sẽ kích hoạt
cho các phần tử không chia hết cho 2 và
3, và gọi lệnh continue ở đó,
lệnh này ngay lập tức sẽ chuyển chúng ta
sang lượt lặp mới của vòng lặp:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
} else {
continue; // chuyển sang lượt lặp mới của vòng lặp
}
echo $res; // sẽ thực thi nếu chia hết cho 2 hoặc 3
}
?>
Hãy viết một vòng lặp, chỉ in ra
các số chẵn từ 1 đến 100,
bỏ qua các số lẻ bằng cách sử dụng continue.