วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th คำสั่งควบคุม วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th
คำสั่งควบคุม การเปรียบเทียบตัวเลขสำหรับสร้างเงื่อนไข มีตัวดำเนินการดังนี้ == เท่ากับ > มากกว่า >= มากกว่าหรือเท่ากับ < น้อยกว่า <= น้อยกว่าหรือเท่ากับ != ไม่เท่ากับ
การสร้างเงื่อนไข เราสามารถสร้างเงื่อนไขจากการเปรียบเทียบได้ซับซ้อนมากขึ้นโดย ใช้ตัวดำเนินการ "และ" "หรือ" "ไม่" มาประกอบ ตัวอย่างเช่น ($x == -1) || ($x==1) ถ้า $x มีค่าเท่ากับ -1 หรือ 1 จะได้เงื่อนไขเป็นจริง นอกเหนือจาก นั้นเป็นเท็จ ($x < 10) && ($x >1) ถ้า $x มีค่าน้อยกว่า 10 และ มากกว่า 1 ก็จะได้เงื่อนไขที่เป็นจริง นอกเหนือจากนั้นเป็นเท็จ !
การสร้างเงื่อนไข(ต่อ) ($x==0) ถ้า $x ไม่เท่ากับศูนย์ ก็ได้เงื่อนไขเป็นจริง นอกเหนือจากนั้นเป็นเท็จ การใช้ || และ && มีลักษณะการทำงานเหมือนในภาษาซี ($x || $y) ถ้า $x เป็นจริงจะไม่มีการพิจารณา $y และสำหรับ ($x && $y) ถ้า $x เป็นเท็จแล้วจะไม่มีการพิจารณา $y ต่อ
คำสั่ง if if เป็นคำสั่งที่ใช้สำหรับการทดสอบเงื่อนไขและเลือกปฏิบัติตามเงื่อนไข เมื่อเงื่อนไขเป็นจริง รูปแบบมีดังนี้ if ( เงื่อนไข ) { // รายการคำสั่งที่กำหนดในบล็อคเมื่อเงื่อนไขเป็นจริง }
คำสั่ง if (ต่อ) $int_a = 10 ; การทำงาน ถ้าเงื่อนไขจริงจะปฏิบัติตามคำสั่งที่อยู่ในบล็อค { } แล้วทำคำสั่ง ลำดับถัดไป แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามไปทำคำสั่งลำดับถัดไป เช่น $int_a = 10 ; if ($int_a -= 5) echo “ a = $int_a <BR>” ; จะได้ผลลัพธ์คือ a = 5
คำสั่ง if-else if-else เป็นคำสั่งที่ใช้ในการทดสอบเงื่อนไขโดยจะเลือกปฏิบัติการอย่าง หนึ่งถ้าผลการทดสอบเงื่อนไขเป็นจริง และทำอีกอย่างหนึ่งถ้าการทดสอบ ให้ค่าเป็นเท็จ มีรูปแบบดังนี้ if ( เงื่อนไข ) { // รายการคำสั่งที่กำหนดในบล็อคเมื่อเงื่อนไขเป็นจริง } else { // รายการคำสั่งที่กำหนดในบล็อคเมื่อเงื่อนไขเป็นเท็จ
คำสั่ง if-else (ต่อ) การทำงาน เมื่อทดสอบนิพจน์เงื่อนไขแล้ว ถ้าเงื่อนไขจริงก็จะทำในบล็อคแรก แล้ว ทำคำสั่งลำดับถัดไป แต่ถ้าเงื่อนไขเป็นเท็จจะทำในบล็อคที่ 2 แล้ว ทำคำสั่งถัดไป
คำสั่ง if-else (ต่อ) ตัวอย่างที่ 3-2 $int_a = 5 ; if ($int_a -= 5) { echo “ a = $int_a <BR>” ; } else { echo “ a is zero. <BR>” ; a is zero.
คำสั่ง if-else ซ้อน เป็นคำสั่งที่ใช้เลือกการทำงานในกรณีที่มีทางเลือกมากกว่า 2 ทาง มีรูปแบบดังนี้ if ( เงื่อนไข ) { // รายการคำสั่งที่กำหนดในบล็อคเมื่อเงื่อนไขเป็นจริง } elseif { // รายการคำสั่งที่กำหนดในบล็อคเมื่อเงื่อนไขเป็นเท็จ else { // รายการคำสั่งที่กำหนดในบล็อค
<TITLE>Figure 3-2</TITLE> </HEAD> <BODY> <? 3-2.php <HTML> <HEAD> <TITLE>Figure 3-2</TITLE> </HEAD> <BODY> <? if($name == "") { print("You have no name."); } elseif(($name == "leon") OR ($name == "Leon")) { print("Hello, Leon!"); else { print("Your name is '$name'."); ?> </BODY> </HTML>
<TITLE>Figure 3-4</TITLE> </HEAD> <BODY> <? 3-4.php <HTML> <HEAD> <TITLE>Figure 3-4</TITLE> </HEAD> <BODY> <? /* ** Get today's weekday name */ $english_Day = date("l"); ** Find the today's German name if($english_Day == "Monday") { $deutsch_Day = "Montag"; }
elseif($english_Day == "Tuesday") { $deutsch_Day = "Dienstag"; } elseif($english_Day == "Wednesday") $deutsch_Day = "Mittwoch"; elseif($english_Day == "Thursday") $deutsch_Day = "Donnerstag"; elseif($english_Day == "Friday") $deutsch_Day = "Freitag"; elseif($english_Day == "Saturday") $deutsch_Day = "Samstag";
else { // It must be Sunday $deutsch_Day = "Sonntag"; } /* ** Print today's English and German names */ print("<H2>German Lesson: Day of the Week</H2>\n"); print("In English: <B>" . date("l") . "</B>.<BR>\n"); print("In German: <B>$deutsch_Day</B>.<BR>\n"); ?> </BODY> </HTML>
คำสั่ง switch - case รูปแบบคำสั่ง switch ( variable) { case VALUE1 : break; case VALUE2 : case VALUE3 : break; case VALUE n : break ; default : break; }
<TITLE>Figure 3-7</TITLE> </HEAD> <BODY> <? 3-7.php <HTML> <HEAD> <TITLE>Figure 3-7</TITLE> </HEAD> <BODY> <? /* ** Get today's weekday name */ $english_Day = date("l"); ** Find the today's German name
switch($english_Day) { case "Monday": $deutsch_Day = "Montag"; break; case "Tuesday": $deutsch_Day = "Dienstag"; case "Wednesday": $deutsch_Day = "Mittwoch"; case "Thursday": $deutsch_Day = "Donnerstag"; case "Friday": $deutsch_Day = "Freitag";
case "Saturday": $deutsch_Day = "Samstag"; break; default: // It must be Sunday $deutsch_Day = "Sonntag"; } /* ** Print today's English and German names */ print("<H2>German Lesson: Day of the Week</H2>\n"); print("In English: <B>" . date("l") . "</B>.<BR>\n"); print("In German: <B>$deutsch_Day.</B><BR>\n"); ?> </BODY> </HTML>
การทำขั้นตอนซ้ำหรือวนลูป การวนลูปหรือสร้างลูปเพื่อทำงานซ้ำเป็นส่วนประกอบสำคัญของ โปรแกรมคอมพิวเตอร์ ในภาษา PHP ก็จะใช้โครงสร้างเหมือนกับภาษาซี ประกอบด้วยคำสั่งดังต่อไปนี้ while-do loop do-while loop for-loop
คำสั่ง WHILE เป็นคำสั่งวนลูปที่ง่ายที่สุดใน PHP โดยทำการงานจะตรวจสอบ เงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งที่อยู่ในลูป แต่ถ้าเงื่อนไขเป็น เท็จจะออกจากลูป รูปแบบคำสั่ง แบบที่ 1 while(condition) { // statement block. }
รูปแบบคำสั่ง WHILE (ต่อ) รูปแบบที่ 2 while(condition) : // statement block. Endwhile ;
<TITLE>Example 3-9</TITLE> </HEAD> <BODY> 3-9.php <HTML> <HEAD> <TITLE>Example 3-9</TITLE> </HEAD> <BODY> <? /* ** get the current date in number of seconds */ $currentDate = time(); ** print some text explaining the output print("Days left before Friday:\n"); print("<OL>\n");
while(date("l", $currentDate) != "Friday") { /* ** print day name */ print("<LI>" . date("l", $currentDate) . "\n"); ** add 24 hours to currentDate $currentDate += (60 * 60 * 24); } print("</OL>\n"); ?> </BODY> </HTML>
คำสั่ง DO...WHILE คล้าย while loop แต่จะทำการตรวจสอบเงื่อนไข ตอนท้าย โดย จะทำงานใน do while ลูป อย่างน้อย 1 ครั้งตอนเริ่มต้นแล้วจึงตรวจสอบเงื่อนไข ถ้าเงื่อนไขจริงจะวนลูปและออกจากลูปเมื่อเงื่อนไขเป็นเท็จ
รูปแบบคำสั่ง DO...WHILE รูปแบบคำสั่ง do { statement ; } while(condition);
<HTML> <HEAD> <TITLE>Figure 3-11</TITLE> </HEAD> <BODY> <? /* ** get the current date in number of seconds */ $currentDate = time(); ** print some text explaining the output
print("Days left before next Friday:\n"); print("<OL>\n"); do { /* ** print day name */ print("<LI>" . date("l", $currentDate) . "\n"); ** add 24 hours to currentDate $currentDate += (60 * 60 * 24); } while(date("l", $currentDate) != "Friday"); print("</OL>\n"); ?> </BODY> </HTML>
คำสั่ง FOR คำสั่ง FOR เป็นคำสั่งทำงานเป็นวงรอบ เมื่อจำนวนครั้งที่กระทำเป็นจำนวนจำกัด และเป็นคำสั่งวนรอบที่มีความซับซ้อนมากขึ้น รูปแบบคำสั่ง for (expr1; expr2; expr3;) statement ;
<HTML> <HEAD> <TITLE>Example 3-13</TITLE> </HEAD> <BODY> <? for($counter = 1; $counter <= 10; $counter++) { print("counter is $counter<BR>\n"); } ?> </BODY> </HTML>
<HTML> <HEAD> <TITLE>Figure 3-14</TITLE> </HEAD> <BODY> <? /* ** print some text explaining the output */ print("Days left before Friday:\n"); print("<OL>\n"); for($currentDate = date("U"); date("l", $currentDate) != "Friday"; $currentDate += (60 * 60 * 24))
{ /* ** print day name */ print("<LI>" . date("l", $currentDate) . "\n"); } print("</OL>\n"); ?> </BODY> </HTML>
<HTML> <HEAD> <TITLE>Example 3-10</TITLE> </HEAD> <BODY> <? while(true) { print("This line is printed."); break; print("This line will never be printed."); } ?> </BODY> </HTML>
คำสั่ง break เป็นคำสั่งให้ออกจากการทำงานของคำสั่ง switch-case หรือออกจากการทำงานในลูป เพื่อให้ไปทำงานยังคำสั่งที่อยู่ต่อจากคำสั่งที่ให้ทำงานเป็นลูป ในภาษา PHP คำสั่ง break และ continue เป็นคำสั่งภายในลูป เหมือนที่ใช้กันในภาษาซี
for ($index = 0; $index < 10; $index++) { break.php <?php for ($index = 0; $index < 10; $index++) { // A. when $index is three, the loop ends. if ($index == 3) { break; } echo "$index<br>"; // B. After the break, execution starts here. echo "After the loop: index=$index<br>"; ?> 1 2 After the loop: index=3
$flg_break_happened = 0; for ($index = 0; $index < 10; $index++) { 3-21.php <? $flg_break_happened = 0; for ($index = 0; $index < 10; $index++) { if ($index == 3) { break; $flg_break_happened = 1; } echo "$index<br>"; if ($flg_break_happened) { echo "Loop ended because of break.<br>"; else { echo "Loop ended naturally.<br>"; ?> 1 2 Loop ended naturally.
for ($row = 0; $row < 10; $row++) { <?php for ($row = 0; $row < 10; $row++) { for ($col = 0; $col < 10; $col++) { if ($col == 5) { break 2; } echo "[$row,$col]<br>"; ?> [0,0] [0,1] [0,2] [0,3] [0,4]
คำสั่ง continue เป็นคำสั่งที่ให้กลับไปทำยังคำสั่งแรกของคำสั่งควบคุม for, while, do while ใหม่