บทนำ
การดำเนินการมีเงื่อนไขของคำสั่งหนึ่งหรือหลายคำสั่งเป็นคุณสมบัติสำคัญที่สุดของภาษาโปรแกรมใดๆ PHP ให้ความสามารถนี้ด้วยคำสั่ง if, else และ elseif การใช้งานหลักของคำสั่ง if ดังนี้:
รูปแบบไวยากรณ์
if (expression) statement;
นิพจน์หน้าคีย์เวิร์ด if เป็นนิพจน์ตรรกะ ประเมินเป็น TRUE หรือ FALSE หากค่าเป็น TRUE คำสั่งบรรทัดถัดไปจะถูกดำเนินการ มิฉะนั้นจะถูกข้าม หากมีคำสั่งมากกว่าหนึ่งที่ต้องดำเนินการเมื่อนิพจน์เป็น TRUE ให้จัดกลุ่มคำสั่งโดยใช้วงเล็บปีกกาเพิ่มเติม:
if (expression){ statement1; statement2; .. }
หากต้องการดำเนินการคำสั่งอื่นหรือกลุ่มคำสั่งเมื่อนิพจน์เป็น FALSE ใช้คีย์เวิร์ด else และเขียนคำสั่งหนึ่งหรือมากกว่า (ภายในอีกคู่วงเล็บปีกกา) ไว้ด้านล่าง:
if (expression){ statement1; statement2; .. } else { statement3; statement4; .. }
ตัวอย่างต่อไปนี้แสดงการใช้งานทั่วไปของ if และ else ใช้ฟังก์ชัน readline() อ่านค่าจากคีย์บอร์ดในการรันบรรทัดคำสั่ง รับคะแนนเป็นอินพุต แสดงผลเป็น pass หรือ fail ขึ้นกับว่าคะแนน >= 50 หรือไม่
ตัวอย่าง
<?php $marks=(int)readline("enter marks: "); if ($marks>=50){ echo "The result is pass" . "\n"; echo "congratulations" . "\n"; } else{ echo "The result is Fail". "\n"; echo "Better luck next time" . "\n"; } ?>
ผลลัพธ์
The result is Fail Better luck next time
หลายครั้ง เมื่อเงื่อนไขเป็นเท็จ คุณอาจต้องตรวจสอบว่าเงื่อนไขอีกอันหนึ่งเป็นจริงหรือไม่ ในกรณีนี้ ต้องใช้คำสั่ง if อีกอันใน else clause ของ if แรก อาจมีชุด if - else แบบคascade หลายชุด ทำให้โปรแกรมน่าเบื่อ PHP มีคำสั่ง elseif เพื่อแก้ปัญหานี้
ตามที่คีย์เวิร์ดบ่งชี้ elseif เป็นการรวม if และ else ทำงานคล้าย else แต่มีความต่างเล็กน้อย ตรรกะเงื่อนไขของโค้ดมีเงื่อนไข if หลายอัน โฟลว์โปรแกรมหล่นผ่าน cascade ของ elseif conditionals และ instance แรกของ elseif expression ที่เป็นจริง บล็อกของมันจะถูกดำเนินการและการดำเนินการออกมา บล็อกเงื่อนไขสุดท้ายเป็นส่วนของ else clause จะถูกดำเนินการก็ต่อเมื่อ if และ elseif expressions ก่อนหน้าทั้งหมดเป็นเท็จ
รูปแบบไวยากรณ์
if (expression){ statement; } elseif (expression){ statement; } elseif (expression){ statement; } . . else{ statement; } }
ในตัวอย่างต่อไปนี้ elseif statement ใช้คำนวณเกรดนักเรียนจากคะแนน:
ตัวอย่าง
<?php $marks=(int)readline("enter marks: "); if ($marks<35) echo "fail"; elseif ($marks<50) echo "pass class"; elseif ($marks<60) echo "second class"; elseif ($marks<75) echo "first class"; else echo "distinction"; ?>
ผลลัพธ์
fail