跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

Loop: do-while loop

บทความนี้อธิบายเกี่ยวกับ `do-while loop` ซึ่งเป็น loop ประเภทหนึ่งที่แตกต่างจาก `while loop` ตรงที่ชุดคำสั่งภายใน `do` block จะถูก execute อย่างน้อยหนึ่งครั้งก่...

Loop: do-while loop

ในบทเรียนที่ผ่านมา เราได้เรียนรู้เกี่ยวกับ while loop ซึ่งจะทำการตรวจสอบเงื่อนไขก่อนที่จะเริ่มวนซ้ำ ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับ do-while loop ซึ่งมีความแตกต่างกันเล็กน้อย คือจะทำการวนซ้ำชุดคำสั่งอย่างน้อยหนึ่งครั้งก่อนที่จะทำการตรวจสอบเงื่อนไข

โครงสร้างของ do-while loop

โครงสร้างของ do-while loop มีดังนี้:

do {
  // ชุดคำสั่งที่ต้องการให้ทำซ้ำ
} while (condition);

จากโครงสร้างข้างต้น จะเห็นได้ว่าชุดคำสั่งภายใน do block จะถูก execute ก่อนเสมอ จากนั้นจึงจะทำการตรวจสอบ condition หาก condition เป็นจริง (true) loop จะวนซ้ำอีกครั้ง หาก condition เป็นเท็จ (false) loop จะสิ้นสุด

การทำงานของ do-while loop

  1. ชุดคำสั่งภายใน do block จะถูก execute
  2. เงื่อนไข (condition) จะถูกตรวจสอบ
  3. ถ้า condition เป็นจริง (true) กลับไปที่ขั้นตอนที่ 1
  4. ถ้า condition เป็นเท็จ (false) loop จะสิ้นสุด

ตัวอย่างการใช้งาน do-while loop

ลองพิจารณาตัวอย่างต่อไปนี้:

<?php
$i = 0;
do {
  echo "ค่าของ i คือ: " . $i . "<br>";
  $i++;
} while ($i <= 5);
?>

ผลลัพธ์ที่ได้คือ:

ค่าของ i คือ: 0<br>
ค่าของ i คือ: 1<br>
ค่าของ i คือ: 2<br>
ค่าของ i คือ: 3<br>
ค่าของ i คือ: 4<br>
ค่าของ i คือ: 5<br>

ในตัวอย่างนี้ ตัวแปร $i ถูกกำหนดให้มีค่าเริ่มต้นเป็น 0 จากนั้น do-while loop จะทำการ execute ชุดคำสั่งภายใน do block ซึ่งจะทำการพิมพ์ค่าของ $i และเพิ่มค่า $i ขึ้นทีละ 1 หลังจากนั้นจะทำการตรวจสอบเงื่อนไข $i <= 5 หากเงื่อนไขเป็นจริง loop จะวนซ้ำอีกครั้ง จนกระทั่ง $i มีค่ามากกว่า 5 loop จึงจะสิ้นสุด

ตัวอย่างที่ซับซ้อนขึ้น

สมมติว่าเราต้องการให้ผู้ใช้ป้อนตัวเลข จนกว่าจะป้อนตัวเลขที่มากกว่า 10 เราสามารถใช้ do-while loop ได้ดังนี้:

<?php
$number = 0;
do {
  $number = readline("กรุณาป้อนตัวเลขที่มากกว่า 10: ");
  if (!is_numeric($number)) {
    echo "กรุณาป้อนตัวเลขเท่านั้น!<br>";
    $number = 0; // Reset number to force loop to continue
    continue;
  }
  if ($number <= 10) {
    echo "ตัวเลขที่คุณป้อนน้อยกว่าหรือเท่ากับ 10 กรุณาป้อนใหม่<br>";
  }
} while ($number <= 10);

echo "ขอบคุณที่ป้อนตัวเลขที่มากกว่า 10 คือ " . $number;
?>

ในตัวอย่างนี้ เราใช้ฟังก์ชัน readline() เพื่อรับข้อมูลจากผู้ใช้ และตรวจสอบว่าข้อมูลที่ป้อนเป็นตัวเลขหรือไม่ ถ้าไม่ใช่ จะแสดงข้อความแจ้งเตือนและวนซ้ำอีกครั้ง ถ้าเป็นตัวเลข แต่มีค่าน้อยกว่าหรือเท่ากับ 10 ก็จะแสดงข้อความแจ้งเตือนและวนซ้ำอีกครั้ง Loop จะสิ้นสุดเมื่อผู้ใช้ป้อนตัวเลขที่มากกว่า 10

หมายเหตุ: ฟังก์ชัน readline() อาจไม่สามารถใช้งานได้ในทุกสภาพแวดล้อม หากไม่สามารถใช้งานได้ คุณอาจต้องใช้ฟังก์ชันอื่นในการรับข้อมูลจากผู้ใช้ เช่น การใช้ HTML form และ $_POST

ความแตกต่างระหว่าง while และ do-while

ความแตกต่างที่สำคัญระหว่าง while loop และ do-while loop คือ do-while loop จะทำการ execute ชุดคำสั่งภายใน do block อย่างน้อยหนึ่งครั้งเสมอ แม้ว่าเงื่อนไขจะเป็นเท็จตั้งแต่แรกก็ตาม ในขณะที่ while loop จะทำการตรวจสอบเงื่อนไขก่อนที่จะเริ่ม execute ชุดคำสั่ง หากเงื่อนไขเป็นเท็จตั้งแต่แรก ชุดคำสั่งภายใน while loop จะไม่ถูก execute เลย

ตัวอย่าง:

<?php
$i = 10;

// while loop
while ($i < 5) {
  echo "This will not be printed by while loop.<br>";
  $i++;
}

// do-while loop
do {
  echo "This will be printed once by do-while loop.<br>";
  $i++;
} while ($i < 5);
?>

ผลลัพธ์ที่ได้คือ:

This will be printed once by do-while loop.<br>

จากตัวอย่างข้างต้น จะเห็นได้ว่า while loop ไม่ได้ทำการ execute ชุดคำสั่งภายใน loop เลย เนื่องจากเงื่อนไข $i < 5 เป็นเท็จตั้งแต่แรก ในขณะที่ do-while loop ได้ทำการ execute ชุดคำสั่งภายใน do block หนึ่งครั้ง ก่อนที่จะทำการตรวจสอบเงื่อนไข

ข้อควรระวัง

เช่นเดียวกับ while loop การใช้ do-while loop อย่างไม่ระมัดระวังอาจทำให้เกิด infinite loop ได้ ดังนั้นจึงควรตรวจสอบให้แน่ใจว่าเงื่อนไขภายใน do-while loop จะเป็นเท็จในที่สุด เพื่อให้ loop สิ้นสุดการทำงาน

นอกจากนี้ คำสั่ง break และ continue สามารถใช้เพื่อควบคุมการทำงานของ do-while loop ได้เช่นเดียวกับ while loop

สรุป

do-while loop เป็นโครงสร้างควบคุมที่ใช้สำหรับการวนซ้ำโดยอาศัยเงื่อนไขที่กำหนด โดยจะทำการวนซ้ำชุดคำสั่งอย่างน้อยหนึ่งครั้งก่อนที่จะทำการตรวจสอบเงื่อนไข เหมาะสำหรับกรณีที่ต้องการให้ชุดคำสั่งถูก execute อย่างน้อยหนึ่งครั้งเสมอ เช่น การรับข้อมูลจากผู้ใช้และการตรวจสอบความถูกต้องของข้อมูล

ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ Arrays: การสร้างและเข้าถึงข้อมูล

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务