Week 3 Flow Control in PHP อ.ปัณฑรีย์ สวัสดิมงคล sapantharee@yahoo.com
หัวข้อบรรยาย การควบคุมการทำงาน (Flow Control) ในภาษา PHP If…else switch while do...while for
Flow Control ในภาษา PHP เงื่อนไข จริง เท็จ จริง เท็จ Sequential Selection Repetition
Flow Control ในภาษา PHP คำสั่งให้เลือกทำ (Selection Statement) if … else switch คำสั่งวนทำซ้ำ/วนลูป (Repetition Statement) while do … while for
Flow Control ในภาษา PHP คำสั่ง if เป็นคำสั่งที่ใช้ในการทดสอบเงื่อนไขและเลือกปฏิบัติตามเงื่อนไข รูปแบบ if (condition) { Statement ; … ; … } ตัวอย่าง if ($height > 0 && $width > 0) { $area = $height*$width; echo “Area of square = ” .$area; } เงื่อนไข คำสั่งต่าง ๆ เมื่อ เงื่อนไขเป็นจริง คำสั่งถัดไป จริง เท็จ
Flow Control ในภาษา PHP คำสั่ง if … else รูปแบบ if (condition) { Statement ; … } else ตัวอย่าง if ($height > 0 && $width > 0) { $area = $height*$width; echo “Area of square = ” .$area; } { echo “Please enter new value”;} เงื่อนไข คำสั่งต่าง ๆ เมื่อ เงื่อนไขเป็นจริง คำสั่งถัดไป จริง เท็จ เงื่อนไขเป็นเท็จ
Flow Control ในภาษา PHP คำสั่ง if … elseif (netsed if statement) รูปแบบ if (condition1) { Statement ; … } elseif (condition2) else เงื่อนไข 1 คำสั่งต่าง ๆ เมื่อ เงื่อนไข 1 เป็นจริง จริง เท็จ เงื่อนไข 2 เงื่อนไข 3 เงื่อนไข 2 เป็นจริง เงื่อนไข 3 เป็นจริง คำสั่งถัดไป
Flow Control ในภาษา PHP คำสั่ง if … elseif (netsed if statement) ตัวอย่าง if ($score < 0) echo “Enter new score\n”; elseif ($score >= 80.0) $grade = “A”; elseif ($score >= 60.0) $grade = “B”; else $grade = “C”; เงื่อนไข 1 คำสั่งต่าง ๆ เมื่อ เงื่อนไข 1 เป็นจริง จริง เท็จ เงื่อนไข 2 เงื่อนไข 3 เงื่อนไข 2 เป็นจริง เงื่อนไข 3 เป็นจริง คำสั่งถัดไป
Flow Control ในภาษา PHP Switch เป็นคำสั่งที่มีการทำงานคล้ายคำสั่ง if แต่จะมีการกำหนดเป็นทางเลือก ซึ่งอาจมาจากเงื่อนไข หรือ ค่าของตัวแปรที่ต้องการตรวจสอบ ตัวแปร case : ค่าที่ 1 คำสั่งที่ต่างๆ เมื่อตัวแปร มีค่าเท่ากับค่าที่ 1 case : ค่าที่ 2 มีค่าเท่ากับค่าที่ 2 case : ค่าที่ N มีค่าเท่ากับค่าที่ N คำสั่งถัดไป
Flow Control ในภาษา PHP การใช้ switch จะตามด้วยตัวแปรที่ต้องการตรวจสอบค่า ถ้าตรงกับ case ไหน จะทำตามคำสั่งใน case นั้นไปจนกว่าจะเจอคำสั่ง break แต่ถ้าหากเปรียบเทียบแล้วไม่ตรงกับ case ใด ๆ เลย จะทำในคำสั่ง default รูปแบบ switch (variable) { case value1 : statement; break; case value2 : statement; case valueN : statement; default : statement; }
Flow Control ในภาษา PHP <html> <body> <? $day = date("l"); //ตัวแอลนะ switch ( $day) { case "Monday" : echo "วันนี้วันจันทร์" ;break; case "Tuesday" : echo "วันนี้วันอังคาร" ;break; case "Wednesday" : echo "วันนี้วันพุธ" ;break; case "Thursday" : echo "วันนี้วันพฤหัส เรียนอีกวันก็หยุดแล้ว" ;break; case "Friday" : echo "วันนี้วันสุดท้ายของการเรียน" ;break; default : echo "เฮ.. วันนี้วันหยุด นอนอยู่บ้าน" ; } ?> </body> </html>
Flow Control ในภาษา PHP กรณีหลายๆ case ทำงานอย่างเดียวกัน /* How many days in a month? */ switch ($month) { case 2: //Feb $days = 28; break; case 9: // Sep case 4: // April case 6: // June case 11: // Nov $days = 30; break; default: $days = 31; // All of the rest }
Flow Control ในภาษา PHP เปรียบเทียบการใช้ switch และ if $year = 15; switch ($year){ case 5 : $rate = 12; break; case 15 : $rate = 18; case 20 : $rate = 24; default : echo "Error!!"; } $year = 15; if($year == 5) { $rate = 12; }elseif($year == 15) { $rate = 18; }elseif($year == 20) { $rate = 24; }else{ echo "Error!!"; }
Flow Control ในภาษา PHP while และ do .. while เป็นการทำงานแบบ loop เช่นกันแต่มีการเปลี่ยนตำแหน่งของการเช็คเงื่อนไข while จะเช็คก่อนทำใน loop ดังนั้น ถ้าเช็คครั้งแรกแล้วเงื่อนไขเป็นเท็จ จะไม่มีการเข้าทำงานในลูปเลย do.. while ทำใน loop 1 ครั้งก่อนแล้วค่อยไปเช็คเงื่อนไข ดังนั้น ถึงการเช็คเงื่อนไขครั้งแรกเป็นเท็จ คำสั่งที่อยู่ภายในลูปก็จะได้รับการทำงานอย่างน้อยที่สุด 1 ครั้งเสมอ
Flow Control ในภาษา PHP เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ while คำสั่งที่ 1 เงื่อนไข จริง เท็จ คำสั่งที่ 2 do..while
Flow Control ในภาษา PHP เมื่อต้องการให้เกิดการทำงานซ้ำ จะทำงานเมื่อเงื่อนไขเป็นจริง ไม่รู้ว่าจะต้องทำซ้ำกี่ครั้ง (แต่ถึงรู้จำนวนครั้งที่จะวนซ้ำ ก็สามารถใช้ while และ do..while ได้ เพียงแต่ไม่เป็นที่นิยม เพราะจะใช้ for แทน) คำสั่งที่อยู่ใน loop ต้องส่งผลให้เงื่อนไขที่เช็คมีโอกาสเป็นเท็จ (ออกจาก loop ได้) มิเช่นนั้นจะเกิดเหตุการณ์ loop ไม่รู้จบ
Flow Control ในภาษา PHP while statement รูปแบบ while (condition) { statement; …… } do…while statement รูปแบบ do { statement; …… } while (condition);
Flow Control ในภาษา PHP <? $counter=5; while ($counter > 0){ echo $counter; echo "<br />"; $counter--; } ?> <? $counter=5; do{ echo $counter; echo "<br />"; $counter--; } while ($counter > 0) ?>
Flow Control ในภาษา PHP for เป็นคําสั่งวนซ้ำที่ใช้แก้ปัญหาโจทย์ลักษณะ ที่มีการทำงานเดิมซ้ำๆกันหลาย ๆ ครั้งโดยที่รู้จำนวนรอบที่แน่นอน รูปแบบแบ่งออกเป็น 3 ส่วน คือ ส่วนกำหนดค่าตัวนับ เป็นการกำหนดค่าเริ่มต้นให้กับตัวแปร เพื่อใช้ควบคุมการวน loop ส่วนที่ตรวจสอบเงื่อนไขเพื่อตัดสินว่าจะวนซ้ำ หรือไม่ ส่วนของการจัดการค่าตัวนับของการวนซ้ำ เป็นการเพิ่มค่าหรือการลดค่าให้ตัวแปรที่ควบคุม loop
Flow Control ในภาษา PHP For i=1 to 3 พิมพ์ค่า i พิมพ์ Hello for ( $i=1 ; $i <= 3 ; $i++) { echo $i.“Hello”; }
Flow Control ในภาษา PHP การเพิ่มค่าในแต่ละรอบจะเป็นเท่าไรก็ได้ เช่น for($x = 0;$x<=100;$x+= 5) ในส่วนของการเปลี่ยนค่า นอกจากการเพิ่มค่า (increment) สามารถกำหนดให้มีการลดค่าของตัวแปรที่ใช้ในการวนรอบได้ for($x = 100;$x>0;$x--) ตัวแปรที่ใช้ในการวนรอบอาจกำหนดให้เป็นชนิด char ได้ for($ch = ‘a’;$ch<=‘z’;$ch++)
Flow Control ในภาษา PHP break จะใช้หยุดการทำงานของวนรอบ loop for ($i=1; $i<11; $i++) { if ($i == 6) break; echo "Hello...ครั้งที่ $i <br>"; }
Flow Control ในภาษา PHP continue จะทำงานตรงข้ามกับคำสั่ง Break คำสั่ง Continue จะสั่งให้โปรแกรมทำงานต่อไป คำสั่ง Continue กับ For คือจะเป็นการสั่งให้กลับไปเพิ่มค่าให้กับตัวแปรทันที คำสั่ง Continue กับ While คือจะเป็นการสั่งให้กลับไปทดสอบเงื่อนไขใหม่ทันที <? for($i=1;$i<11;$i++){ if($i==6){ continue;} echo "Hello...ครั้งที่ $i <br>"; } ?> Hello...ครั้งที่ 1 Hello...ครั้งที่ 2 Hello...ครั้งที่ 3 Hello...ครั้งที่ 4 Hello...ครั้งที่ 5 Hello...ครั้งที่ 7 Hello...ครั้งที่ 8 Hello...ครั้งที่ 9 Hello...ครั้งที่ 10
The End…