ประโยคควบคุม php 5

ประโยคควบคุม
ในการควบคุมลำดับการทำงานนั้น ทุกๆ ภาษาจะมีประโยคที่มีเงื่อนไขในการควบคุมเสมอ เช่น "ถ้า A เป็นจริง ให้ทำ B ถ้าไม่ใช้ให้ทำ C " เป็นต้น ในภาษา PHP ก็เช่นเดียวกัน ลักษณะของประโยคเงื่อนไขในภาษา PHP ประกอบด้วย
  • if .... else .... elseif
  • while
  • do ... while
  • for
  • foreach
  • break
  • continue
  • switch
if ... else .... elseif
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;
?>

while
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
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
for เป็น Loop ที่เกิดจากการผสมเงื่อนไขเริ่มต้น Loop while และ การเพิ่มลดค่าไว้ด้วยกัน เพื่อให้การเขียนเข้าใจได้ง่ายขี้น เพื่อประกอบความเข้าใจ ในที่นี้จึงจะขอยกตัวอย่างการทำงานที่เหมือนกัน แต่เขียนเป็น Loop for เปรียบเทียบกับ Loop while ดังต่อไปนี้
โครงสร้าง
Loop forLoop 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";

?>

foreach
เป็น Loop ที่เกิดจากการผสมผสาน Loop while , Function List และ Function each (รายละเอียดของ Array ให้ดู Function เกี่ยวกับ Array) ทั้งนี้ Loop foreach เพิ่งจะถูกพัฒนาขึ้นบน PHP4 หลักการทำงานโดยทั่วไปคือการนำค่าแต่ละตัวภายใน Array มาทำากรประมวลใน Loop แต่ละรอบ
โครงสร้าง
Loop foreachLoop 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
ในที่นี้มีลักษณะเดียวกันกับ 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
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";
}
?>

switch
การใช้ swtich นั้นเป็นเพียงการช่วยให้ Code ที่เขียนดูเข้าใจง่ายขึ้นเท่านั้น แต่การทำงานของ switch จะมีความหมายเหมือนกับการเขียน if ต่อกันหลายๆ อัน
โครงสร้าง
SwitchIf 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";
}
?>