You are on page 1of 32

PHP ครัง้ ที่ 2

การควบคุมการทำงาน (Control Structure)


2
การควบคุมการทำงาน (Control Structure)

 เป็ นโครงสร้างของภาษาทีใ่ ช้ส ำหรับบริหารและจัดการภายโปรแกรม ให้ตอบ


สนองตามเงือ่ นไข และเหตุการณ์ทเ่ี ราต้องการ แบ่งเป็ น 3 กลุม่ คือ
 กลุม่ คำสังแบบมี
่ เงือ่ นไข (Condition)
 กลุม่ คำสังแบบวนรอบ
่ (Loop)
 กลุม่ คำสังกระโดดออกจากคำสั
่ งวนรอบ
่ (Breaking)
3 ่ เงือ่ นไข (Condition)
กลุม่ คำสังแบบมี

 เป็ นกลุม่ ของคำสังที


่ ใ่ ช้ในการตัดสินใจ เงือ่ นไขต่างๆ ประกอบด้วย
 คำสัง่ if
 คำสัง่ if . . . else
 คำสัง่ if . . . elseif
 คำสัง่ switch
คำสัง่ if
4

if (เงือ่ นไข) {
รูปแบบ
คำสังต่่ างๆ เมื่อเงือ่ นไขเป็ น จริง
}
 เป็ นคำสังที
่ ใ่ ช้ส ำหรับการตัดสินใจ โดยจะทำคำสังภายใน
่ if เมือ่
เงือ่ นไขเป็ นจริง
คำสัง่ if
5

$score = 81;

เท็จ จริง if($score >= 80) {


เงือ่ นไข
echo "Grade = A" ;
}
คำสัง่ ต่าง ๆ เมื่อ
เงือ่ นไขเป็ นจริง
Grade = A

คำสัง่ ถัดไป
คำสัง่ if . . . else
6

รูปแบบ if (เงือ่ นไข) {


คำสังต่่ างๆ เมื่อเงือ่ นไขเป็ น จริง
}
else {
คำสังต่ ่ างๆ เมื่อเงือ่ นไขเป็ น เท็จ
}

 เป็ นคำสัง่ ทีใ่ ช้ส ำหรับการตัดสินใจทีม่ ี 2 เงือ่ นไข โดยจะทำคำสังภายใน



if เมือ่ เงือ่ นไขเป็ น จริง และ
ทำคำสัง่ ภายใน else เมือ่ เงือ่ นไขเป็ น เท็จ
คำสัง่ if . . . else
7

$score = 70;
if($score >= 80) {
เท็จ จริง $result = "Pass";
เงือ่ นไข
}else{
$result = "Fail";
คำสังต่่ าง ๆ เมื่อ คำสัง่ ต่าง ๆ เมื่อ
เงือ่ นไขเป็ นเท็จ เงือ่ นไขเป็ นจริง }
echo "Grade=" . $result;

คำสัง่ ถัดไป Grade=Fail


คำสัง่ if . . . elseif
8

if (เงือ่ นไข 1) {
คำสังต่่ างๆ เมื่อเงือ่ นไข 1 เป็ น จริง
}
elseif (เงือ่ นไข 2) {
รูปแบบ คำสังต่ ่ างๆ เมื่อเงือ่ นไข 2 เป็ น จริง
}
elseif (เงือ่ นไข 3) {
คำสังต่ ่ างๆ เมื่อเงือ่ นไข 3 เป็ น จริง
}...
คำสัง่ if . . . elseif เท็จ จริง
9
เงือ่ นไข 1

เท็จ จริง คำสังต่่ าง ๆ เมื่อ


เงือ่ นไข 2 เงือ่ นไข 1 เป็ นจริง

เท็จ จริง คำสังต่่ าง ๆ เมื่อ


เงือ่ นไข 3 เงือ่ นไข 2 เป็ นจริง

คำสัง่ ต่าง ๆ เมื่อ


เงือ่ นไข 3 เป็ นจริง

คำสังถั
่ ดไป
คำสัง่ if . . . elseif
10
$score = 76;
if($score >= 80) {
$result = "A";
}elseif($score >= 75) {
$result = "B+";
}elseif($score >= 70) {
$result = "B";
}
echo "Grade = " . $result;
Grade = B+
คำสัง่ switch
11

 เป็ นคำสังที
่ ม่ กี ารทำงานคล ้ายคำสัง่ if แต่จะมีการกำหนดเป็ นทางเลือก ซึง่
อาจมาจากเงือ่ นไข หรือ ค่าของตัวแปรทีต่ อ้ งการตรวจสอบ
คำสัง่ switch
12

switch (ตัวแปร) {
case ค่าที่ 1 : คำสังที
่ ่ต่างๆ เมื่อตัวแปรมีค่าเท่ากับค่าที่ 1;
break;
case ค่าที่ 2 : คำสังที
่ ่ต่างๆ เมื่อตัวแปรมีค่าเท่ากับค่าที่ 2;
รูปแบบ break;
case ค่าที่ N : คำสังที
่ ่ต่างๆ เมื่อตัวแปรมีค่าเท่ากับค่าที่ N;
break;
default : คำสังเมื
่ ่อไม่มีค่าใดเลย ใน case ที่ตรงกับตัวแปร
}
Note: คำสัง่ break จะทำให้โปรแกรมกระโดด ออกจากคำสัง่ switch
คำสัง่ switch
13 ตัวแปร

case : ค่าที่ 1 case : ค่าที่ 2 case : ค่าที่ 3

คำสังที
่ ่ต่างๆ เมื่อตัวแปร คำสัง่ ที่ต่างๆ เมื่อตัวแปร คำสังที
่ ่ต่างๆ เมื่อตัวแปร
มีคา่ เท่ากับค่าที่ 1 มีคา่ เท่ากับค่าที่ 2 มีคา่ เท่ากับค่าที่ 3

คำสัง่ ถัดไป
คำสัง่ switch
14
 โปรแกรมคำนวนเงินกู้ (Loan.php)
 สมมติให้ ธนาคารคิดอัตราดอกเบี ้ย ($rate) ของเงินกู ้ ($cash)
ตามจำนวนปี ที่ก้ เู งิน ($year) ประกอบด้ วย
ระยะเวลากู้ อัตราดอกเบี ้ย
5 ปี 8%
15 ปี 10%
20 ปี 12%

คำนวนหา
 อัตราดอกเบีย
้ ($rate) %
 ดอกเบีย
้ ทีต ี $interest (บาท)
่ ้องเสย
 จำนวนเงินทัง้ หมดทีต
่ ้องจ่าย $total (บาท)
 รายเดือนทีต
่ ้องจ่ายในแต่ละเดือน $monthly(บาท)
คำสัง่ switch
15
$year = 15; $year = 15;
switch ($year){ if($year == 5) {
case 5 : $rate = 12; $rate = 12;
break; }elseif($year == 15) {
case 15 : $rate = 18; $rate = 18;
break; }elseif($year == 20) {
case 20 : $rate = 24; $rate = 24;
break; }else{
default : echo "Error!!"; echo "Error!!";
} }
16 กลุม่ คำสัง่ แบบวนรอบ (Loop)

 เป็ นกลุม่ คำสังที


่ ใ่ ช้ส ำหรับการวนซ้ำทำงาน ไปเรื่อยๆ จนกว่าเงือ่ นไขทีก่ ำหนด
ไว้จะเป็ นจริง ถึงจะออกจากการวนซ้ำ ประกอบด้วย 3 คำสัง่ คือ
 คำสัง่ for
 คำสัง่ while
 คำสัง่ do … while
17 คำสัง่ for
for (initialized; condition ; change) {
รูปแบบ ทำคำสังต่
่ างๆ เมื่อเงือ่ นไขเป็ น จริง
}

initialized กำหนดค่ าเริ่มต้ น  เป็ นคำสังที


่ ต่ อ้ งมีการกำหนดค่าเริ่ม
ตัวนับ ต้นในลักษณะตัวนับ และจะมีการ
เปลีย่ นแปลงค่าของตัวนับในแต่ละ
condition เงือ่ นไข รอบ (ทำในขณะทีเ่ งือ่ นไขเป็ น จริง)
change การเปลีย่ นแปลง
ค่ าตัวนับ
18 คำสัง่ for

กำหนดค่าเริ่มต้นของตัวนับ

เท็จ จริง
เงือ่ นไข

คำสัง่ ถัดไป คำสังต่


่ าง ๆ เมื่อเงือ่ นไข เป็ นจริง

เปลี่ยนแปลงค่าตัวนับ
19 คำสัง่ for
for ($i =1; $i <= 6 ; $i++){
echo "<h$i> Display header $i </h$i>";
}

for ($k = 6; $k >= 1; $k--){


echo "<h$k> Display header $k </h$k>";
}
20 คำสัง่ while
while (condition) {
รูปแบบ ทำคำสังต่
่ างๆ เมื่อเงือ่ นไขเป็ น จริง
}

 เป็นคำสง่ ั ทีม
่ ก
ี ารตรวจสอบเงือ
่ นไข
ก่อนการทำงาน และจะทำในขณะที่
เงือ
่ นไขเป็น จริง
21 คำสัง่ while

เท็จ จริง
เงือ่ นไข

คำสัง่ ถัดไป คำสังต่


่ าง ๆ เมื่อเงือ่ นไข เป็ นจริง
22 คำสัง่ while
$i = 1;
while ($i <= 6){
echo "<h$i> Display header $i </h$i>";
$i++;
}

$i = 6;
while ($i <= 1){
echo "<h$i> Display header $i </h$i>";
$i--;
}
23 คำสัง่ do . . . while
do {
รูปแบบ ทำคำสังต่
่ างๆ เมื่อเงือ่ นไขเป็ น จริง
} while (condition)

 เป็นคำสง่ ั ทีแ
่ ม้วา
่ เงือ
่ นไขในรอบแรกจะ
เป็นจริง หรือเท็จ ก็จะประมวลผล และ
จะทำในขณะทีเ่ งือ ่ นไขเป็น จริง ในรอบ
ถ ัดไป
24 คำสัง่ do . . . while

คำสัง่ ต่าง ๆ ใน do … while


โดยไม่สนใจว่าจะเป็ นจริง หรือเท็จ

เท็จ จริง
เงือ่ นไข คำสังต่
่ าง ๆ เมื่อเงือ่ นไข เป็ นจริง

คำสัง่ ถัดไป
25 คำสัง่ do . . . while
$i = 1;
do{
echo "<h1> Display value i = $i </h1>";
$i++;
} while ($i <= 6 )

$i = 6;
do{
echo "<h1> Display value i = $i </h1>";
$i--;
} while ($i >= 1 )
26
กลุม่ คำสังกระโดดออกจากคำสั
่ งวนรอบ
่ (Breaking)

 เป็ นคำสัง่ ทีท่ ำงานร่วมกับกลุม่ คำสังแบบวนรอบ


่ โดยประกอบด้วย 3 คำสัง่
คือ
 break
 continue
 exit
27 break
// ชุดคำสังที
่ ่ประมวลผลใน Loop ก่อนหน้า
รูปแบบ . . .
break;

 เมือ่ โปรแกรมพบคำสังนี
่ ้ จะกระโดดออกจากการวนซ้ำ (Loop)
28 continue
// ชุดคำสังที
่ ่ประมวลผลใน Loop ก่อนหน้า
รูปแบบ
...
continue;
 เมือ่ โปรแกรมพบคำสังนี
่ ้ จะหยุดการทำงานคำสังบรรทั
่ ดอืน่ ๆ ทีอ่ ยู่ถดั
ไป แต่จะกระโดดขึ้นไปเริ่มต้นทำงานทีต่ น้ ของการวนซ้ำใหม่
(Loop)
29 exit
// ชุดคำสังที
่ ่ประมวลผลก่อนหน้า
รูปแบบ . . .
exit;
 เมือ่ โปรแกรมพบคำสังนี
่ ้ จะหยุดการทำงานของคำสังที
่ เ่ หลือทัง้ หมด
และออกจากโปรแกรม
30
กลุม่ คำสังกระโดดออกจากคำสั
่ งวนรอบ
่ (Breaking)
$num = 0;
while(1<2){
$num = $num + 1;
if($num == 10){
echo "จบการทำงานใน while loop <br>"; break;
} // end if
if($num > 0 && $num <= 9){
echo "ตัวเลข" . $num . "<br>"; continue; echo "hi";
} // end if
} // end while
exit;
echo "โปรแกรมแสดงการใช้คำสังกระโดดออกจาก
่ loop";
31
กลุม่ คำสังกระโดดออกจากคำสั
่ งวนรอบ
่ (Breaking)

สังเกตว่าคำสัง่
 echo "hi" ไม่มกี ารแสดงผล
เนือ่ งจากเจอคำสัง่ continue;

 echo "โปรแกรมแสดงการใช้ค ำสัง่ กระโดดออก


จาก loop";

ไม่มกี ารแสดงผล เนือ่ งจากเจอคำสัง่


exit;
The End

You might also like