คำสั่งควบคุมการทำงาน: switch case
จากบทที่แล้ว เราได้เรียนรู้เกี่ยวกับคำสั่ง if, else และ elseif ซึ่งช่วยให้เราสามารถสร้างเงื่อนไขที่โปรแกรมสามารถเลือกเส้นทางการทำงานได้ ในบทนี้ เราจะมาทำความรู้จักกับคำสั่ง switch case ซึ่งเป็นอีกทางเลือกหนึ่งในการจัดการกับเงื่อนไขที่ซับซ้อน โดยเฉพาะเมื่อเรามีหลายเงื่อนไขที่ต้องตรวจสอบจากค่าของตัวแปรเดียว
โครงสร้างของ switch case
คำสั่ง switch case มีโครงสร้างดังนี้:
switch (expression) {
case value1:
// code to be executed if expression == value1;
break;
case value2:
// code to be executed if expression == value2;
break;
case value3:
// code to be executed if expression == value3;
break;
...
default:
// code to be executed if expression doesn't match any value;
}
คำอธิบาย:
expressionคือ นิพจน์ (expression) ที่เราต้องการตรวจสอบค่าcase value1:,case value2:, ... คือ ค่าที่เราต้องการเปรียบเทียบกับexpression// code to be executedคือ โค้ดที่จะถูกดำเนินการหากexpressionตรงกับvalueในcaseนั้นๆbreak;คือ คำสั่งที่ใช้หยุดการทำงานของswitch caseเมื่อเจอcaseที่ตรงกับexpressiondefault:คือ ส่วนของโค้ดที่จะถูกดำเนินการหากexpressionไม่ตรงกับvalueในcaseใดๆ เลย (คล้ายกับelseในif else)
การใช้งาน break statement
break statement มีความสำคัญมากในการใช้งาน switch case หากเราไม่ใส่ break หลังจากแต่ละ case เมื่อเจอ case ที่ตรงกับ expression แล้ว โปรแกรมจะดำเนินการโค้ดใน case นั้นๆ และดำเนินการโค้ดใน case ถัดไปเรื่อยๆ จนกว่าจะเจอ break หรือจบ switch case ทั้งหมด
ตัวอย่าง:
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
case "blue":
echo "Your favorite color is blue!";
case "green":
echo "Your favorite color is green!";
default:
echo "Your favorite color is neither red, blue, nor green!";
}
?>
ผลลัพธ์ของโค้ดนี้คือ:
Your favorite color is red!Your favorite color is blue!Your favorite color is green!Your favorite color is neither red, blue, nor green!
เนื่องจากไม่มี break หลังจาก case "red": โปรแกรมจึงดำเนินการโค้ดในทุก case ต่อไปเรื่อยๆ
ตัวอย่างที่ถูกต้อง (มีการใช้ break):
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, nor green!";
}
?>
ผลลัพธ์ของโค้ดนี้คือ:
Your favorite color is red!
เนื่องจากมี break หลังจาก case "red": โปรแกรมจึงหยุดการทำงานของ switch case เมื่อเจอ case ที่ตรงกัน
การใช้งาน default case
default case เป็นส่วนที่ optional ใน switch case เราสามารถใช้ default case เพื่อกำหนดโค้ดที่จะถูกดำเนินการหาก expression ไม่ตรงกับ value ใน case ใดๆ เลย
ตัวอย่าง:
<?php
$day = date("D"); // Get the current day of the week (e.g., Mon, Tue, Wed)
switch ($day) {
case "Mon":
echo "Today is Monday.";
break;
case "Tue":
echo "Today is Tuesday.";
break;
case "Wed":
echo "Today is Wednesday.";
break;
case "Thu":
echo "Today is Thursday.";
break;
case "Fri":
echo "Today is Friday.";
break;
case "Sat":
echo "Today is Saturday.";
break;
case "Sun":
echo "Today is Sunday.";
break;
default:
echo "Something went wrong!";
}
?>
ในตัวอย่างนี้ เราใช้ switch case เพื่อตรวจสอบค่าของ $day ซึ่งเก็บชื่อวันในสัปดาห์ หาก $day มีค่าเป็น "Mon", "Tue", ..., "Sun" โปรแกรมจะแสดงข้อความที่สอดคล้องกัน แต่ถ้า $day มีค่าอื่นที่ไม่ตรงกับ case ใดๆ เลย โปรแกรมจะแสดงข้อความ "Something went wrong!" ใน default case
ตัวอย่างการใช้งาน switch case ที่ซับซ้อนขึ้น
เราสามารถใช้ switch case เพื่อจัดการกับเงื่อนไขที่ซับซ้อนขึ้นได้ โดยการใช้ case หลายอันร่วมกันเพื่อทำสิ่งเดียวกัน
<?php
$grade = "A";
switch ($grade) {
case "A":
case "B":
echo "You passed!";
break;
case "C":
case "D":
echo "You need to study harder.";
break;
case "F":
echo "You failed.";
break;
default:
echo "Invalid grade.";
}
?>
ในตัวอย่างนี้ หาก $grade เป็น "A" หรือ "B" โปรแกรมจะแสดงข้อความ "You passed!" หาก $grade เป็น "C" หรือ "D" โปรแกรมจะแสดงข้อความ "You need to study harder." และหาก $grade เป็น "F" โปรแกรมจะแสดงข้อความ "You failed." หาก $grade เป็นค่าอื่นที่ไม่ตรงกับ case ใดๆ เลย โปรแกรมจะแสดงข้อความ "Invalid grade."
ข้อดีและข้อเสียของ switch case
ข้อดี:
- อ่านง่ายกว่า
if elseเมื่อมีหลายเงื่อนไขที่ต้องตรวจสอบจากค่าของตัวแปรเดียว - มีประสิทธิภาพมากกว่า
if elseในบางกรณี
ข้อเสีย:
- ใช้ได้เฉพาะกับการเปรียบเทียบค่าที่เท่ากัน (equality) เท่านั้น ไม่สามารถใช้กับเงื่อนไขที่ซับซ้อนกว่านั้นได้ (เช่น
>,<,>=,<=) - ต้องระวังเรื่องการใช้
breakหากลืมใส่breakอาจทำให้โปรแกรมทำงานไม่ถูกต้อง
สรุป
คำสั่ง switch case เป็นเครื่องมือที่มีประโยชน์ในการจัดการกับเงื่อนไขที่ซับซ้อน โดยเฉพาะเมื่อเรามีหลายเงื่อนไขที่ต้องตรวจสอบจากค่าของตัวแปรเดียว อย่างไรก็ตาม เราต้องระวังเรื่องการใช้ break และต้องเข้าใจข้อจำกัดของ switch case เพื่อให้ใช้งานได้อย่างถูกต้องและมีประสิทธิภาพ ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ loop ซึ่งเป็นเครื่องมือที่ช่วยให้เราสามารถทำซ้ำโค้ดได้