PHP กับเงื่อนไข If - Else

ในการเขียนโปรแกรมนั้นสิ่งที่จะต้องเจอบ่อยๆ คือเงื่อนไขการตัดสินใจ เช่นการให้เกรดของอาจารย์ ก็ต้องมีการกำหนดเงื่อนไขว่า คะแนนเท่าไหร่จะได้เกรดอะไร เช่น
คะแนนเกรด
0 – 490
50 – 591
60 – 692
70 – 793
80 – 1004

รูปแบบการเขียนโค๊ด ดังนี้
ตัดสินใจเงื่อนไขเดียว
if( $score < 50 ){
     echo "<br/>คุณได้เกรด 0";
}

การตัดสินใจแบบหลายเงื่อนไข

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$score 70;
 
if$score >= 80 ){
     echo "คุณได้เกรด A";
}else if$score >= 70 && $score 80 ){
     echo "คุณได้เกรด B";
}else if$score >= 60 && $score 70 ){
     echo "คุณได้เกรด D";
}else if$score >= 50 && $score 60 ){
     echo "คุณได้เกรด D";
}else{
     echo "คุณสอบตก";
}
?>




















นอกจากนี้ ยังมีรูปแบบการเขียนที่กระชับ และอ่านเข้าใจง่ายกรณีที่ใช้ตรวจสอบเงื่อนไข และไม่ต้องดำเนินการในโค๊ดยากนัก คือการใช้คำสั่ง switch …… case
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$grade 'C';
 
echo 'เกรดที่คุณต้องการคือ เกรด '$grade;
 
switch$grade ){
 
 case 'A' :
  echo "คุณจะต้องได้คะแนนตั้งแต่ 80 คะแนนขึ้นไป";
 break;
 case 'B' :
  echo "คุณจะต้องได้คะแนน 70 - 79 คะแนน";
 break;
 case 'C' :
  echo "คุณจะต้องได้คะแนน 60 - 69 คะแนน";
 break;
 case 'D' :
  echo "คุณจะต้องได้คะแนน 50 - 59 คะแนน";
 break;
 default :
  echo "คุณแค่ไม่ต้องมาสอบ ไม่ต้องส่งงาน ก็จะิติด 0 ไปเอง ^^";
 break;
 
}
?>



















switch ….. case นั้นกับการตรวจสอบเงื่อนไขที่ เขียนโค๊ดใน case นั้นไม่กี่บรรทัดเท่านั้นครับ
ถ้าเขียนยาวกว่านั้น จะค่อนข้างสับสน ว่าจบเคสรึยัง (break;) ถ้าหากมีการตรวจสอบแล้วต้องเขียนโค๊ดยาวๆก็ใช้ if ….. else ดีกว่าครับ เข้าใจง่ายกว่าว่าจบเคสที่ไหน เพราะมีวงเล็บปีกกา ( } ) เป็นตัวเปิดปิดคำสั่งให้

สำหรับการใช้ switch case แล้วต้องเขียนโค๊ดยาวจริงๆ
เคยเห็นบางที่เขียนแบบใช้วงเล็กปีกกาด้วยก็ได้นะครับ


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$grade 'C';
 
echo 'เกรดที่คุณต้องการคือ เกรด '$grade;
 
switch$grade ){
 
 case 'A' : {
  echo "คุณจะต้องได้คะแนนตั้งแต่ 80 คะแนนขึ้นไป";
 break;
 }case 'B' :{
  echo "คุณจะต้องได้คะแนน 70 - 79 คะแนน";
 break;
 }case 'C' : {
  echo "คุณจะต้องได้คะแนน 60 - 69 คะแนน";
 break;
 }case 'D' : {
  echo "คุณจะต้องได้คะแนน 50 - 59 คะแนน";
 break;
 }default : {
  echo "คุณแค่ไม่ต้องมาสอบ ไม่ต้องส่งงาน ก็จะติด 0 ไปเอง ^^";
 break;
 }
 
}
?>
จะเลือกแบบไหนก็ตามแต่สไตล์ละกันนะครับ ว่าต้องตรวจสอบหลายเงื่อนไข หรือว่าเงื่อนไขเดียว
ถ้าเงื่อนไขเดียวแนะนำให้ใช้ switch …. case ครับ แต่ถ้าตรวจสอบหลายเงื่อนไข คงแนะนำให้ใช้ if …. else แทนครับ

เงื่อนไขเดียว คือ ถ้า score เท่ากับ a

?
1
2
3
4
5
<?php
     if$score $a){// 1 เงือนไข
          //code
     }
?>


หลาย เงื่อนไข คือ ถ้า score มากกว่า a กับ b หรือมากกว่า c กับ d
?
1
2
3
4
5
6
7
<?php
     if( ($score > a && $score > b) || ($score > c && $score > d) ){// 4 เงื่อนไข
          //code
     else if($score a || $score < c ){// 2 เงื่อนไข
 
     }
?>