คำสั่ง continue ใน PHP
นอกจากคำสั่ง break ที่จบการทำงานของลูปแล้ว ยังมีคำสั่ง continue ที่เริ่มการวนซ้ำใหม่ของลูปอีกด้วย บางครั้งคำสั่งนี้อาจมีประโยชน์สำหรับการทำให้โค้ดง่ายขึ้น แม้ว่าโดยทั่วไปเราสามารถแก้ปัญหาได้โดยไม่ต้องใช้มันก็ตาม มาดูตัวอย่างในทางปฏิบัติกัน
สมมติว่าเรามีอาร์เรย์ของตัวเลข ลองวนลูปผ่านมันและนำตัวเลขที่หารด้วย 2 ลงตัวมายกกำลังสองแล้วแสดงผลออกทางหน้าจอ และนำตัวเลขที่หารด้วย 3 ลงตัวมายกกำลังสามแล้วแสดงผลออกทางหน้าจอ
นี่คือวิธีแก้ปัญหาตามที่อธิบายไว้:
<?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;
}
}
?>
อย่างที่คุณเห็น บรรทัด echo $res ถูกทำซ้ำสองครั้ง ลองย้ายมันออกนอก if แบบนี้:
<?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; // ย้ายการแสดงผลออกนอกเงื่อนไขแล้ว
}
?>
อย่างไรก็ตาม ตอนนี้สคริปต์ของเราทำงานต่างออกไปเล็กน้อย: กลายเป็นว่าสำหรับองค์ประกอบทั่วไปที่ไม่ผ่านการประมวลผลใน if ของเรา การแสดงผลตัวแปร $res บนหน้าจอก็จะยังถูกดำเนินการ ซึ่งตามเงื่อนไขของงานเราไม่ต้องการสิ่งนั้น
มาแก้ไขปัญหาด้วยการเพิ่มเงื่อนไข else เข้าไปใน if ของเรา ซึ่งจะทำงานสำหรับองค์ประกอบที่หารด้วย 2 และ 3 ไม่ลงตัว และเรียกคำสั่ง continue ที่นั่น ซึ่งจะโยนเราไปยังการวนซ้ำใหม่ของลูปทันที:
<?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; // จะเปลี่ยนไปยังการวนซ้ำใหม่ของลูป
}
echo $res; // จะดำเนินการ ถ้าหารด้วย 2 หรือ 3 ลงตัว
}
?>
เขียนลูปที่แสดงเฉพาะตัวเลขคู่ตั้งแต่ 1 ถึง 100 โดยข้ามตัวเลขคี่โดยใช้ continue