ในการควบคุมลำดับการทำงานนั้น ทุกๆ ภาษาจะมีประโยคที่มีเงื่อนไขในการควบคุมเสมอ เช่น "ถ้า 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;
}
<?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;
<?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;
}
หรือ
while (expression) :
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);
<?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";
}
?> |