ในบทนี้ นักเรียนจะได้เรียนรู้เกี่ยวกับคำสั่งเลือกเงือนไข If If Else และ Switch เพื่อควบคุมการทำงานของโปรแกรมในภาษา PHP
ในการเขียนโปรแกรม อาจจะมีเงือนไขหรือข้อกำหนดบางอย่างที่คุณต้องการให้โปรแกรมทำงานแตกต่างกันไป การตัดสินใจจึงเป็นเรื่องธรรมดาที่เกิดขึ้นทั้งในการเขียนโปรแกรมและในชีวิตประจำวัน ยกตัวอย่างเช่น ถ้าคุณมีเงินมากกว่า 100 เหรียญ คุณจะซื้อวิดีโอเกม แต่ถ้าคุณไม่เงินไม่พอคุณจะซื้อหนังสือแทน
เราจะมาเริ่มกับคำสั่งที่พื้นฐานที่สุดสำหรับคำสั่งเลือกเงื่อนไข คำสั่ง If
คำสั่ง If เป็นคำสั่งควบคุมที่พื้นฐานที่สุดในการเขียนโปรแกรม มันใช้สำหรับควบคุมการทำงานในกรณีที่เงื่อนไขเป็นจริง นี่เป็นรูปแบบการใช้งานของคำสั่ง If ในภาษา PHP
if (expression)
statements
การตรวจสอบเงือนไขของคำสั่ง If นั้น เกิดจากการประเมิน expression ถ้าหากเป็นจริงโปรแกรมจะทำงานในบล็อคของคำสั่ง If ถ้าหากไม่เป็นจริงโปรแกรมจะข้ามการทำงานไป มาดูตัวอย่างการใช้งาน
<?php
$number = 5;
if ($number == 5) {
echo "Number is equal 5.";
}
?>
ในตัวอย่าง เรามีตัวแปร $number ในการเก็บค่าของตัวเลข เนื่องจาก Expression เป็นจริง นั่นคือในตัวแปรมีค่าเท่ากับ 5 โปรแกรมจึงทำงานในบล็อคของคำสั่ง If และแสดงข้อความ "Number is equal 5."
<?php
$username = "sam43";
$password = "1234";
if ($username == "sam43" && $password == "1234") {
echo "Login succeeded.";
}
?>
ในตัวอย่าง เป็นการตรวจสอบการเข้าสู่ระบบของเว็บไซต์ เราได้สร้าง Expression ที่ซับซ้อนขึ้นโดยมีตัวแปร $username และ $password เพื่อให้ในบล็อคคำสั่งทำงานชื่อผู้ใช้ต้องเป็น "sam43" และรหัสผ่านต้องเป็น "1234" และเนื่องจากค่าในตัวแปรทำให้ Expression เป็นจริง ทำให้โปรแกรมแสดงข้อความว่า "Login succeeded."
Login succeeded
คำสั่ง If Else ใช้สำหรับตรวจสอบเงื่อนไขเช่นเดียวกับคำสั่ง If แต่ในการทำงานจะมีการเพิ่มบล็อคของคำสั่ง else เข้ามาถ้าหากเงือนไขในคำสั่ง If ไม่เป็นจริง มาดูตัวอย่างการใช้คำสั่ง If Else ในภาษา PHP
<?php
$money = 80;
if ($money >= 100) {
echo "Buy a video game.";
} else {
echo "Buy a book.";
}
?>
ในตัวอย่างเป็นการใช้งานคำสั่ง If Else กับสถาณการณ์ที่เราได้พูดถึงก่อนหน้านี้ เรามีตัวแปร $money เก็บค่าของจำนวนเงิน ถ้ามีเงินมากกว่าหรือเท่ากับ 100 เหรียญเราจะซื้อวิดีโอเกม แต่ถ้าไม่ใช่จะซื้อหนังสือแทน และเนื่องจากเราได้กำหนดค่าในตัวแปรเพียง 80 โปรแกรมจึงทำงานในบล็อคของคำสั่ง Else แทน
Buy a book.
นี่เป็นผลลัพธ์ของโปรแกรมเมื่อมีเงินไม่เพียงพอ คุณลองเปลี่ยนค่าในตัวแปรให้มากกว่า 100 และดูผลลัพธ์ของมันใหม่อีกครั้ง
ในคำสั่ง If-Else เป็นคำสั่งในการสร้างเงือนไขแบบสองทางเลือกหรือจริงและไม่จริงเท่านั้น ในภาษา PHP คุณสามารถสร้างเงือนไขแบบหลายทางเลือกได้โดยการใช้คำสั่ง Else-If สำหรับเงือนไขเพิ่มเติมที่ต้องการ เราจะยกตัวอย่างในการใช้กับโปรแกรมคำนวณเกรด
<?php
$score = 79;
if ($score >= 80) {
echo "Your grade is A.";
} else if ($score >= 70) {
echo "Your grade is B.";
} else if ($score >= 60) {
echo "Your grade is C.";
} else if ($score >= 50) {
echo "Your grade is D.";
} else {
echo "Sorry, you got grade F.";
}
?>
ในตัวอย่าง เป็นโปรแกรมคำนวณเกรดโดยการคำนวณจากคะแนนที่มี เราใช้คำสั่งตรวจสอบเงือนไข If-Else แบบหลายทางเลือกในการสร้างเงือนไขใสแต่ละช่วงคะแนนและเกรดที่จะได้รับ
Your grade is B.
นี่เป็นผลลัพธ์เมื่อรันโปรแกรม เพราะว่าคะแนน 79 อยู่ในช่วงของเกรด B ที่เราได้กำหนดในเงือนไข คุณอาจจะลองเปลี่ยนเงือนไขเป็นแบบอื่นเพื่อดูผลลัพธ์
ในการเขียนโปรแกรมคำสั่งเลือกเงื่อนไขสามารถที่จะซ้อนกันได้ ไม่ว่าจะเป็นคำสั่ง If If-Else เพื่อสร้างเงือนไขหรือในโปรแกรมที่ซับซ้อนขึ้น คุณจะต้องได้พบกับเหตุการณ์ที่คำสั่งเหล่านี้จะซ้อนกันอยู่แน่นอน
<?php
$name = "Mateo";
$logged_in = true;
$lang = "en";
if ($logged_in) {
echo "Hello $name, you now logged in.\n";
if ($lang == "en") {
echo "The website displayed in English.\n";
} else if ($lang == "th") {
echo "The website displayed in Thai.\n";
} else {
echo "The language was not set.\n";
}
} else {
echo "You are not logged in.\n";
}
?>
ในตัวอย่าง เป็นการใช้งานคำสั่งเงือนไขซ้อนกัน คำสั่ง If ด้านนอกเป็นการตรวจสอบการเข้าสู่ระบบของเว็บไซต์ ถ้าผู้ใช้เข้าสู่ระบบเราจะแสดงข้อความทักทายจะมีคำสั่ง If ที่ซ้อนกันอยู่ภายในสำหรับตรวจสอบภาษาที่จะแสดงในเว็บไซต์
Hello Mateo, you now logged in.
The website is displayed in English.
นี่เป็นผลลัพธ์เมื่อรันโปรแกรม ซึ่งทำงานในบล็อคของคำสั่งที่ซ้อนกันของ if ($logged_in) และ if ($lang == "en") ตามลำดับ
ในภาษา PHP ยังมีคำสั่งเลือกเงือนไขอีกคำสั่งหนึ่งคือคำสั่ง Switch ซึ่งการทำงานของคำสั่งนี้จะคล้ายกับคำสั่ง If Else-If ซึ่งเป็นการเลือกแบบหลายทางเลือก แต่ในคำสั่ง Switch จะใช้สำหรับเปรียบเทียบกับค่าคงที่โดยตรงที่ไม่ใช่ Expression มาดูตัวอย่างการใช้งาน
<?php
$abb = "th";
switch ($abb) {
case "de":
$country = "Germany";
break;
case "th":
$country = "Thailand";
break;
case "hu":
$country = "Hungary";
break;
case "tr":
$country = "Turkey";
break;
default:
$country = "Unknown country";
}
echo "Your country is $country.";
?>
ในตัวอย่างเป็นโปรแกรมในการหาชื่อประเทศจากรหัสย่อโดยการใช้คำสั่ง Switch เรามีตัวแปร $abb สำหรับเก็บรหัสย่อของประเทศในโลก ในการใช้งานจะส่งเป็นอากิวเมนต์เข้าไปยังคำสั่ง Switch และโปรแกรมจะทำการตรวจสอบกับเงือนไขในแต่ละ case เมื่อเงือนไขตรงกับ Case ใดๆ โปรแกรมจะทำงานคำสั่งหลังจาก Case นั้นจนสิ้นสุดบล็อคคำสั่ง Switch เราจำเป็นต้องใช้คำสั่ง break เพื่อหยุดการทำงานของโปรแกรมสำหรับแต่ละ Case
Your country is Thailand.
นี่เป็นผลลัพธ์เมื่อรันโปรแกรม ในตัวแปร $country จะมีค่าเป็น "Thailand" เพราะว่าตรงกับเงื่อนไขใน case "th"