คำสั่งเลือกเงื่อนไข

19 December 2016

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับคำสั่งเลือกเงือนไข If If Else และ Switch เพื่อควบคุมการทำงานของโปรแกรมในภาษา PHP

ในการเขียนโปรแกรม อาจจะมีเงือนไขหรือข้อกำหนดบางอย่างที่คุณต้องการให้โปรแกรมทำงานแตกต่างกันไป การตัดสินใจจึงเป็นเรื่องธรรมดาที่เกิดขึ้นทั้งในการเขียนโปรแกรมและในชีวิตประจำวัน ยกตัวอย่างเช่น ถ้าคุณมีเงินมากกว่า 100 เหรียญ คุณจะซื้อวิดีโอเกม แต่ถ้าคุณไม่เงินไม่พอคุณจะซื้อหนังสือแทน

เราจะมาเริ่มกับคำสั่งที่พื้นฐานที่สุดสำหรับคำสั่งเลือกเงื่อนไข คำสั่ง If

คำสั่ง 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."

Number is equal 5.

นี่เป็นผลลัพธ์ของโปรแกรม

มาดูตัวอย่างเพิ่มเติมสำหรับการใช้คำสั่ง If กับเงือนไขที่ซับซ้อนขึ้น

<?php

$username = "sam43";
$password = "1234";

if ($username == "sam43" && $password == "1234") {
    echo "Login succeeded.";
}

?>

ในตัวอย่าง เป็นการตรวจสอบการเข้าสู่ระบบของเว็บไซต์ เราได้สร้าง Expression ที่ซับซ้อนขึ้นโดยมีตัวแปร $username และ $password เพื่อให้ในบล็อคคำสั่งทำงานชื่อผู้ใช้ต้องเป็น "sam43" และรหัสผ่านต้องเป็น "1234" และเนื่องจากค่าในตัวแปรทำให้ Expression เป็นจริง ทำให้โปรแกรมแสดงข้อความว่า "Login succeeded."

คุณอาจจะลองเปลี่ยนค่าในตัวแปรเป็นค่าอื่น จะพบว่าในบล็อคคำสั่ง If ไม่ทำงานเพราะว่าเงือนไขที่ให้ไม่เป็นจริง

คำสั่ง If Else

คำสั่ง 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-If

ในคำสั่ง 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 ที่เราได้กำหนดในเงือนไข คุณอาจจะลองเปลี่ยนเงือนไขเป็นแบบอื่นเพื่อดูผลลัพธ์

คำสั่ง Switch

ในภาษา 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"

คำสั่ง If ซ้อนกัน

ในการเขียนโปรแกรมคำสั่งเลือกเงื่อนไขสามารถที่จะซ้อนกันได้ ไม่ว่าจะเป็นคำสั่ง If If-Else หรือ Switch เพื่อสร้างเงือนไขหรือในโปรแกรมที่ซับซ้อนขึ้น คุณจะต้องได้พบกับเหตุการณ์ที่คำสั่งเหล่านี้จะซ้อนกันอยู่แน่นอน

<?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") ตามลำดับ

Ternary condition

Ternary condition เป็นคำสังตรวจสอบเงือนไขโดยมี Operand เพียงแค่ 3 ตัว มันเป็นทางลัดของการใช้คำสั่ง If-Else ซึ่งอำนวยความสะดวกในกรณีที่ต้องการตรวจสอบเงือนไขเพียงเล็กน้อย นี่เป็นรูปแบบการใช้งานของ Ternary condition ในภาษา PHP

expression ? value for true : value for false;

เครื่องหมาย ? ใช้สำหรับสร้าง Ternary condition โดย value for true เป็นค่าที่เมื่อเงือนไขเป็นจริง value for false เป็นค่าที่เมื่อเงือนไขเป็นเท็จ มาดูตัวอย่างการใช้งาน

<?php

$male = true;
echo "That is " . ($male ? "his" : "her") . " car.\n";

$n= 10;
echo "$n is an " . ($n % 2 == 0 ? "even": "odd") . " number.\n";

?>

ในตัวอย่างเราได้ใช้ Ternary condition ช่วยในการเขียนโปรแกรม ถ้าคุณไม่ใช้วิธีนี้คุณอาจจะต้องเขียนในรูปแบบเต็มดังนี้

$male = true;

if ($male)
    echo "That his car.\n";
else 
    echo "That her car.\n";

การใช้ Ternary condition จะช่วยให้คุณสามารถเขียนโปรแกรมได้สั้นลงในบางกรณีที่โปรแกรมมีส่วนที่จำเป็นต้องสร้างเงือนไขที่มีสองทางเลือกและไม่ซับซ้อน

Info: ในบล็อคของคำสั่งเลือกเงือนไข โดยปกติคำสั่งจะต้องอยู่ภายในวงเล็บ { } ในกรณีที่มีคำสั่งเพียงคำสั่งเดียว คุณสามารถไม่ใส่วงเว็บได้

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับคำสั่งเลือกเงื่อนไขในภาษา PHP

บทความนี้เป็นประโยชน์หรือไม่? Yes · No