跳到主要内容

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

系统指南 内容已审核

คำสั่งควบคุมการทำงาน: switch case

บทความนี้แนะนำคำสั่ง `switch case` ซึ่งเป็นทางเลือกหนึ่งในการจัดการเงื่อนไขที่ซับซ้อนเมื่อต้องตรวจสอบค่าของตัวแปรเดียว โดยเน้นที่โครงสร้าง, การใช้งาน `break` แล...

คำสั่งควบคุมการทำงาน: 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 ที่ตรงกับ expression
  • default: คือ ส่วนของโค้ดที่จะถูกดำเนินการหาก 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 ซึ่งเป็นเครื่องมือที่ช่วยให้เราสามารถทำซ้ำโค้ดได้

Office.in.th Custom Service

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

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

查看软件开发服务