Loops: for, while, do-while
ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับ Control Structures อย่าง if, else, และ elseif ซึ่งช่วยให้เราสามารถควบคุมการทำงานของโปรแกรมตามเงื่อนไขต่างๆ ได้ ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับ Loops หรือการวนซ้ำ ซึ่งเป็นเครื่องมือสำคัญในการทำซ้ำการทำงานบางอย่างหลายๆ ครั้ง โดยไม่ต้องเขียนโค้ดเดิมซ้ำๆ หลายบรรทัด
PHP มี Loops ให้เลือกใช้ 3 แบบหลักๆ คือ for, while, และ do-while แต่ละแบบก็มีลักษณะการใช้งานที่แตกต่างกันไป เราจะมาดูกันทีละแบบ
for loop
for loop เป็น Loop ที่เหมาะสำหรับการวนซ้ำเมื่อเรารู้จำนวนรอบที่แน่นอนที่เราต้องการวนซ้ำ โครงสร้างของ for loop มีดังนี้:
for (initialization; condition; increment/decrement) {
// โค้ดที่จะถูก execute ในแต่ละรอบ
}
- initialization: ส่วนนี้จะถูก execute เพียงครั้งเดียวในตอนเริ่มต้นของ Loop มักใช้เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปรที่ใช้ในการนับรอบ
- condition: ส่วนนี้จะเป็นเงื่อนไขที่ถูกตรวจสอบก่อนการ execute โค้ดใน Loop แต่ละรอบ ถ้าเงื่อนไขเป็นจริง (
true) โค้ดใน Loop จะถูก execute ถ้าเงื่อนไขเป็นเท็จ (false) Loop จะสิ้นสุด - increment/decrement: ส่วนนี้จะถูก execute หลังจากการ execute โค้ดใน Loop แต่ละรอบ มักใช้เพื่อเพิ่มหรือลดค่าของตัวแปรที่ใช้ในการนับรอบ
ลองดูตัวอย่างการใช้ for loop เพื่อพิมพ์ตัวเลข 1 ถึง 5:
<?php
for ($i = 1; $i <= 5; $i++) {
echo $i . "<br>";
}
?>
ในตัวอย่างนี้:
$i = 1;กำหนดค่าเริ่มต้นให้$iเท่ากับ 1$i <= 5;เงื่อนไขคือ$iต้องน้อยกว่าหรือเท่ากับ 5$i++;เพิ่มค่า$iขึ้นทีละ 1 ในแต่ละรอบ
ดังนั้น Loop จะทำงาน 5 รอบ โดยในแต่ละรอบจะพิมพ์ค่าของ $i และขึ้นบรรทัดใหม่
while loop
while loop เป็น Loop ที่เหมาะสำหรับการวนซ้ำเมื่อเราไม่รู้จำนวนรอบที่แน่นอน แต่เรารู้เงื่อนไขที่ต้องเป็นจริงเพื่อให้ Loop ทำงานต่อไป โครงสร้างของ while loop มีดังนี้:
while (condition) {
// โค้ดที่จะถูก execute ในแต่ละรอบ
}
condition คือเงื่อนไขที่ถูกตรวจสอบก่อนการ execute โค้ดใน Loop แต่ละรอบ ถ้าเงื่อนไขเป็นจริง (true) โค้ดใน Loop จะถูก execute ถ้าเงื่อนไขเป็นเท็จ (false) Loop จะสิ้นสุด
ลองดูตัวอย่างการใช้ while loop เพื่อพิมพ์ตัวเลข 1 ถึง 5:
<?php
$i = 1;
while ($i <= 5) {
echo $i . "<br>";
$i++;
}
?>
ในตัวอย่างนี้:
$i = 1;กำหนดค่าเริ่มต้นให้$iเท่ากับ 1 (ต้องกำหนดค่าก่อนเข้า Loop)while ($i <= 5)เงื่อนไขคือ$iต้องน้อยกว่าหรือเท่ากับ 5$i++;เพิ่มค่า$iขึ้นทีละ 1 ในแต่ละรอบ (ต้องมีการเปลี่ยนแปลงค่า$iภายใน Loop เพื่อให้เงื่อนไขเป็นเท็จในที่สุด)
ข้อควรระวัง: หากเงื่อนไขใน while loop เป็นจริงตลอดเวลา (เช่น while (true)) Loop จะทำงานไปเรื่อยๆ ไม่สิ้นสุด (Infinite Loop) ซึ่งอาจทำให้โปรแกรมค้างได้ ดังนั้นต้องระมัดระวังในการกำหนดเงื่อนไข
do-while loop
do-while loop คล้ายกับ while loop แต่มีความแตกต่างที่สำคัญคือ do-while loop จะ execute โค้ดภายใน Loop อย่างน้อย 1 ครั้งเสมอ แม้ว่าเงื่อนไขจะเป็นเท็จตั้งแต่เริ่มต้น โครงสร้างของ do-while loop มีดังนี้:
do {
// โค้ดที่จะถูก execute ในแต่ละรอบ
} while (condition);
condition คือเงื่อนไขที่ถูกตรวจสอบหลังจากการ execute โค้ดใน Loop แต่ละรอบ ถ้าเงื่อนไขเป็นจริง (true) Loop จะทำงานต่อไป ถ้าเงื่อนไขเป็นเท็จ (false) Loop จะสิ้นสุด
ลองดูตัวอย่างการใช้ do-while loop เพื่อพิมพ์ตัวเลข 1 ถึง 5:
<?php
$i = 1;
do {
echo $i . "<br>";
$i++;
} while ($i <= 5);
?>
ในตัวอย่างนี้:
$i = 1;กำหนดค่าเริ่มต้นให้$iเท่ากับ 1 (ต้องกำหนดค่าก่อนเข้า Loop)do { ... } while ($i <= 5);Loop จะ execute โค้ดภายใน Loop อย่างน้อย 1 ครั้ง$i++;เพิ่มค่า$iขึ้นทีละ 1 ในแต่ละรอบ (ต้องมีการเปลี่ยนแปลงค่า$iภายใน Loop เพื่อให้เงื่อนไขเป็นเท็จในที่สุด)
ลองดูตัวอย่างที่เงื่อนไขเป็นเท็จตั้งแต่เริ่มต้น:
<?php
$i = 6;
do {
echo $i . "<br>";
$i++;
} while ($i <= 5);
?>
ในตัวอย่างนี้ $i มีค่าเริ่มต้นเป็น 6 ซึ่งทำให้เงื่อนไข $i <= 5 เป็นเท็จตั้งแต่เริ่มต้น แต่ do-while loop จะยังคง execute โค้ดภายใน Loop 1 ครั้ง ดังนั้นโปรแกรมจะพิมพ์เลข 6 ออกมา 1 ครั้ง
สรุป
Loops เป็นเครื่องมือที่สำคัญในการเขียนโปรแกรม ช่วยให้เราสามารถทำซ้ำการทำงานบางอย่างได้ง่ายขึ้น PHP มี Loops ให้เลือกใช้ 3 แบบหลักๆ คือ for, while, และ do-while แต่ละแบบก็มีลักษณะการใช้งานที่แตกต่างกันไป:
- for loop: เหมาะสำหรับการวนซ้ำเมื่อรู้จำนวนรอบที่แน่นอน
- while loop: เหมาะสำหรับการวนซ้ำเมื่อไม่รู้จำนวนรอบที่แน่นอน แต่รู้เงื่อนไขที่ต้องเป็นจริงเพื่อให้ Loop ทำงานต่อไป
- do-while loop: คล้ายกับ
whileloop แต่จะ execute โค้ดภายใน Loop อย่างน้อย 1 ครั้งเสมอ
ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ Arrays ซึ่งเป็นโครงสร้างข้อมูลที่ใช้ในการจัดเก็บข้อมูลหลายๆ ค่าไว้ในตัวแปรเดียว