メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

Loop: while loop

บทความนี้อธิบายการทำงานของ `while loop` ใน PHP ซึ่งเป็นโครงสร้างควบคุมที่ใช้สำหรับการวนซ้ำโดยอาศัยเงื่อนไขที่กำหนด โดยจะทำการวนซ้ำตราบเท่าที่เงื่อนไขเป็นจริง แล...

PHP: Loop - while loop

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

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

โครงสร้างของ while loop ใน PHP มีรูปแบบดังนี้:

while (condition) {
    // code to be executed
}

อธิบาย:

  • while (condition): นี่คือส่วนหัวของ while loop โดย condition คือนิพจน์ (expression) ที่จะถูกประเมินค่าว่าเป็นจริง (true) หรือเท็จ (false)
  • { ... }: ภายในวงเล็บปีกกาคือส่วนของโค้ด (code block) ที่จะถูก execute ซ้ำๆ ตราบเท่าที่ condition เป็นจริง

การทำงานของ while loop เป็นดังนี้:

  1. ประเมินค่า condition
  2. ถ้า condition เป็นจริง (true):
    • Execute โค้ดภายใน { ... }
    • กลับไปที่ขั้นตอนที่ 1
  3. ถ้า condition เป็นเท็จ (false):
    • จบการทำงานของ while loop และไป execute โค้ดที่อยู่หลัง while loop

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

ลองดูตัวอย่างง่ายๆ ที่ใช้ while loop เพื่อพิมพ์ตัวเลขจาก 1 ถึง 5:

<?php
$i = 1;

while ($i <= 5) {
    echo $i . " ";
    $i++;
}

echo "<br>Finished!";
?>

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

1 2 3 4 5
Finished!

อธิบาย:

  • $i = 1;: กำหนดค่าเริ่มต้นให้กับตัวแปร $i เป็น 1
  • while ($i <= 5): while loop จะทำงานตราบเท่าที่ $i มีค่าน้อยกว่าหรือเท่ากับ 5
  • echo $i . " ";: พิมพ์ค่าของ $i ตามด้วยช่องว่าง
  • $i++;: เพิ่มค่า $i ขึ้นทีละ 1 (increment) **สำคัญมาก: หากไม่มีการเพิ่มค่า `i` จะเกิด infinite loop**)
  • echo "<br>Finished!";: พิมพ์ข้อความ "Finished!" เมื่อ while loop จบการทำงาน

การตรวจสอบเงื่อนไขก่อนการทำซ้ำ

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

ตัวอย่าง:

<?php
$i = 10;

while ($i <= 5) {
    echo $i . " ";
    $i++;
}

echo "<br>Finished!";
?>

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

Finished!

ในตัวอย่างนี้ $i มีค่าเริ่มต้นเป็น 10 ซึ่งมากกว่า 5 ดังนั้นเงื่อนไข $i <= 5 เป็นเท็จตั้งแต่แรก ทำให้โค้ดภายใน while loop ไม่ถูก execute เลย

การป้องกัน Infinite Loop

สิ่งที่ต้องระวังในการใช้ while loop คือการเกิด infinite loop หรือ loop ที่ไม่มีวันจบสิ้น ซึ่งเกิดขึ้นเมื่อเงื่อนไขใน while loop เป็นจริงอยู่เสมอ ทำให้โค้ดภายใน loop ถูก execute ซ้ำๆ ไปเรื่อยๆ โดยไม่มีจุดสิ้นสุด

ตัวอย่างของ infinite loop:

<?php
$i = 1;

while ($i <= 5) {
    echo $i . " ";
    // Missing $i++;  This will cause an infinite loop!
}

echo "<br>Finished!";
?>

ในตัวอย่างนี้ เราลืมใส่ $i++; ซึ่งจะทำให้ค่าของ $i ไม่มีการเปลี่ยนแปลง และเงื่อนไข $i <= 5 เป็นจริงอยู่เสมอ ทำให้เกิด infinite loop ขึ้น

วิธีป้องกัน infinite loop:

  • ตรวจสอบให้แน่ใจว่าเงื่อนไขใน while loop จะต้องมีโอกาสเป็นเท็จได้
  • ตรวจสอบให้แน่ใจว่ามีการเปลี่ยนแปลงค่าของตัวแปรที่ใช้ในเงื่อนไขภายใน loop เพื่อให้เงื่อนไขมีโอกาสเป็นเท็จได้

การใช้ break และ continue ใน while loop

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

  • break: ใช้เพื่อออกจาก loop ทันที
  • continue: ใช้เพื่อข้ามไปยัง iteration ถัดไปของ loop

ตัวอย่างการใช้ break:

<?php
$i = 1;

while ($i <= 10) {
    echo $i . " ";
    if ($i == 5) {
        break; // Exit the loop when $i is 5
    }
    $i++;
}

echo "<br>Finished!";
?>

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

1 2 3 4 5
Finished!

ในตัวอย่างนี้ เมื่อ $i มีค่าเท่ากับ 5 คำสั่ง break จะถูก execute ทำให้ loop จบการทำงานทันที

ตัวอย่างการใช้ continue:

<?php
$i = 0;

while ($i < 10) {
    $i++;
    if ($i % 2 == 0) {
        continue; // Skip even numbers
    }
    echo $i . " ";
}

echo "<br>Finished!";
?>

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

1 3 5 7 9
Finished!

ในตัวอย่างนี้ เมื่อ $i เป็นเลขคู่ (หารด้วย 2 ลงตัว) คำสั่ง continue จะถูก execute ทำให้ข้ามไปยัง iteration ถัดไป และไม่พิมพ์เลขคู่เหล่านั้นออกมา

While loop กับ Array

while loop สามารถใช้กับ array ได้ แต่โดยทั่วไปแล้ว foreach loop จะเหมาะสมกว่า (ซึ่งเราจะเรียนรู้ในบทถัดไป) อย่างไรก็ตาม, หากต้องการใช้ while loop กับ array เรามักจะใช้ร่วมกับฟังก์ชันเช่น count() เพื่อกำหนดเงื่อนไขในการวนซ้ำ และใช้ index เพื่อเข้าถึง element ใน array

<?php
$fruits = ["apple", "banana", "orange"];
$count = count($fruits);
$i = 0;

while ($i < $count) {
    echo $fruits[$i] . " ";
    $i++;
}

echo "<br>Finished!";
?>

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

apple banana orange
Finished!

อธิบาย:

  • $fruits = ["apple", "banana", "orange"];: สร้าง array ที่เก็บชื่อผลไม้
  • $count = count($fruits);: เก็บจำนวน element ใน array ไว้ในตัวแปร $count
  • $i = 0;: กำหนดค่าเริ่มต้นของ index เป็น 0
  • while ($i < $count): while loop จะทำงานตราบเท่าที่ $i น้อยกว่า $count
  • echo $fruits[$i] . " ";: พิมพ์ element ที่ index $i
  • $i++;: เพิ่มค่า $i เพื่อไปยัง element ถัดไป

สรุป

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

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る