ประโยคควบคุม
ในการควบคุมลำดับการทำงานนั้น ทุกๆ ภาษาจะมีประโยคที่มีเงื่อนไขในการควบคุมเสมอ เช่น "ถ้า A เป็นจริง ให้ทำ B ถ้าไม่ใช้ให้ทำ C " เป็นต้น ในภาษา PHP ก็เช่นเดียวกัน ลักษณะของประโยคเงื่อนไขในภาษา PHP ประกอบด้วย
- if .... else .... elseif
- while
- do ... while
- for
- foreach
- break
- continue
- switch
if คือประโยคเงื่อนไขซึ่งจะกระทำเมื่อเงื่อนไขเป็นจริง ซึ่งอาจจะมี else หรือไม่ก็ได้
โครงสร้าง
if (expression) {
statement;
}
elseif (expression) {
statement;
}
else {
statement;
}
statement;
}
elseif (expression) {
statement;
}
else {
statement;
}
| <?php if ($count > 5) echo "count มากกว่า 5"; // หรือ กรณีที่มี if แล้วต้องการทำมากกว่า 1 ประโยค if ($count > 5) { echo "count มากกว่า 5"; $count=0; } // กรณีมี if และ else if ($count > 5) { echo "count มากกว่า 5"; $count=0; } else { echo "count น้อยกว่าหรือเท่ากับ 5"; $count++; } ?> |
ในบางกรณีอาจจะมีเงื่อนไข if ซ้อนกันหลายชั้น หรืออาจจะมีทางเลือกมากกว่า 2 ทาง เช่น
| <?php if ($count > 5) { echo "count มากกว่า 5"; $count=0; } elseif ($count==5) { echo "count เท่ากับ 5"; $count++; } else { echo "count น้อยกว่า 5"; $count++; } ?> |
ทั้งนี้กรณีมีทางเลือกของข้อมูลมากกว่า 2 ทาง การใช้ switch อาจจะทำให้ Code ที่เขียนดูเข้าใจง่ายกว่า
นอกจากนี้ PHP ยังสนับสนุนการเขียน if...else ในแบบของภาษา basic โดยการใช้ if และ endif อีกด้วย ทั้งนี้มีข้อจำกัดเพิ่มเติมคือจะต้องใส่เครื่องหมาย colon “:” หลังเงื่อนไข if ดังตัวอย่างต่อไปนี้
โครงสร้าง
if (expression) :
statement;
endif;
statement;
endif;
| <?php if ($a==5): ?> A equals to 5 <?php else ?> A not equals to 5 <?php endif; ?> |
Loop while ในภาษา PHP จะทำงานในลักษณะเดียวกันกับ Loop while ในภาษา C คือจะทำการตรวจสอบเงื่อนไขใน while และหากเงื่อนไขนั้นเป็นจริงก็จะทำการประมวลผล ซึ่ง PHP จะรองรับการเขียน Loop while ทั้งแบบภาษา C และ การเขียน Loop while ในรูปแบบของภาษา Basic ดังตัวอย่างต่อไปนี้
โครงสร้าง
while (expression) {
statement;
}
statement;
}
หรือ
while (expression) :
statement;
endwhile;
statement;
endwhile;
| <?php // ตัวอย่างที่ 1 // แสดงผลลัพธ์ 0-4 $i=0; while ($i<5) { echo $i++; } // ตัวอย่างที่ 2 // แสดงผลลัพธ์ 0-4 (Syntax ต่างกัน) $i=0; while ($i<5) : echo $i++; endwhile; ?> |
do...while เป็น Loop ที่ทำงานในลักษณะเดียวกันกับ Loop While แต่มีข้อแตกต่างกันคือ Loop do...while จะตรวจสอบเงื่อนไขหลังจากการประมวลผล ดังตัวอย่างต่อไปนี้
โครงสร้าง
do {
statement;
} while(expression);
statement;
} while(expression);
| <?php // ตัวอย่างที่ 1 // แสดงผลลัพธ์ 0 $i=0; do { echo $i; $i++; } while ($i<1); ?> |
for เป็น Loop ที่เกิดจากการผสมเงื่อนไขเริ่มต้น Loop while และ การเพิ่มลดค่าไว้ด้วยกัน เพื่อให้การเขียนเข้าใจได้ง่ายขี้น เพื่อประกอบความเข้าใจ ในที่นี้จึงจะขอยกตัวอย่างการทำงานที่เหมือนกัน แต่เขียนเป็น Loop for เปรียบเทียบกับ Loop while ดังต่อไปนี้
โครงสร้าง
| Loop for | Loop While |
| for (exp1;exp2;exp3) { statement; } หรือ for (exp1;exp2;exp3) : statement; endfor; | exp1; while (exp2) { statement; exp3; } |
| <?php // เขียนด้วย Loop While $i=0; while ($i<5) { echo "Line :" . $i . "<br>\n"; $i++; } // เขียนด้วย Loop for for ($i=0;$i<5;$i++) echo "Line :" . $i . "<br>\n"; ?> |
เป็น Loop ที่เกิดจากการผสมผสาน Loop while , Function List และ Function each (รายละเอียดของ Array ให้ดู Function เกี่ยวกับ Array) ทั้งนี้ Loop foreach เพิ่งจะถูกพัฒนาขึ้นบน PHP4 หลักการทำงานโดยทั่วไปคือการนำค่าแต่ละตัวภายใน Array มาทำากรประมวลใน Loop แต่ละรอบ
โครงสร้าง
| Loop foreach | Loop While ร่วมกับ list และ each |
foreach ($array as $val) { statement; } หรือ foreach ($array as $key => $val) { statement; } | reset ($array); while (list(,$val) = each ($arr)) { statement; } หรือ reset ($array); while (list($key,$val) = each ($arr)) { statement; } |
ตัวอย่างการใช้ Loop foreach
| <?php $arr = array ( "firstname" => "K", "lastname" => "P" ); foreach ($arr as $value) { echo "Each Value of Arr is : $value<br>\n"; } // หรือ foreach ($arr as $key => $value) { echo "Each Value of Arr is $key => $value<br>\n"; } ?> |
ในที่นี้มีลักษณะเดียวกันกับ break ในภาษา C คือใช้สำหรับการออกนอก Loop หรือ Block ของประโยคควบคุมต่างๆ เช่น if, for, while และ switch
นอกจากนี้จุดเด่นของ break ใน PHP คือสามารถระบุได้ด้วยว่าจะให้ออกจาก Loop กี่ขั้น ดังตัวอย่างต่อไปนี้
| <?php for ($i=0;$i<10;$i++) { if ($arr[$i] == "stop") { break; // หรือ break 1; } } // หรือ $i=0; while (true) { $i++; switch ($i) { case 5 echo "5"; break 1; // ออกจาก switch case 10: break 2; // ออกจาก loop while default: break; } } ?> |
continue นั้นมีลักษณะที่คล้ายคลึงกับ break หากแต่ break นั้นคือการออกจาก Loop หรือ Block ที่กระทำอยู่ ในขณะที่ Continue นั้นจำข้ามไปยังรอบถัดไปของ Loop
เช่นเดียวกับ break จุดเด่นของ continue ใน PHP คือสามารถระบุได้ด้วยว่าจะให้ข้าม Loop กี่รอบ ดังตัวอย่างต่อไปนี้
| <?php while (list ($key,$value) = each($arr)) { if ($val == "skip") { continue ; } echo "$key : $value<br>\n"; } ?> |
การใช้ swtich นั้นเป็นเพียงการช่วยให้ Code ที่เขียนดูเข้าใจง่ายขึ้นเท่านั้น แต่การทำงานของ switch จะมีความหมายเหมือนกับการเขียน if ต่อกันหลายๆ อัน
โครงสร้าง
| Switch | If series |
switch ($var) { case exp1 : statement; case exp2 : statement; break; ..... .... default: statement; } หรือ switch ($var) : case exp1 : statement; case exp2 : statement; break; ..... .... default: statement; endswitch; | if ($var == exp1) { statement; } if (($var == exp1) || ($var == exp2)) { statement; } |
ข้อควรระวังคือ หากไม่ระบุ break จะมีเงื่อนไขเหมือนกับ or ของหลายๆ เงื่อนไข
| <?php switch ($cmd) { case "a" : case "A": echo "Add"; break; case "d" : case "D": echo "Delete"; break; default: echo "Command not found"; } ?> |