คำสั่ง continue ใน PHP

นอกจากคำสั่ง break ที่จบการทำงานของลูปแล้ว ยังมีคำสั่ง continue ที่เริ่มการวนซ้ำใหม่ของลูปอีกด้วย บางครั้งคำสั่งนี้อาจมีประโยชน์สำหรับการทำให้โค้ดง่ายขึ้น แม้ว่าโดยทั่วไปเราสามารถแก้ปัญหาได้โดยไม่ต้องใช้มันก็ตาม มาดูตัวอย่างในทางปฏิบัติกัน

สมมติว่าเรามีอาร์เรย์ของตัวเลข ลองวนลูปผ่านมันและนำตัวเลขที่หารด้วย 2 ลงตัวมายกกำลังสองแล้วแสดงผลออกทางหน้าจอ และนำตัวเลขที่หารด้วย 3 ลงตัวมายกกำลังสามแล้วแสดงผลออกทางหน้าจอ

นี่คือวิธีแก้ปัญหาตามที่อธิบายไว้:

php<?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<?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<?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

เขียนลูปที่แสดงเฉพาะตัวเลขคู่ตั้งแต่ 1 ถึง 100 โดยข้ามตัวเลขคี่โดยใช้ continue