Php เงื่อนไข และ การวนซ้ำ Professional Home Page :PHP เกียรติพงษ์ ยอดเยี่ยมแกร
เครื่องหมายเปรียบเทียบ ความหมาย > มากกว่า < น้อยกว่า >= มากกว่าหรือเท่ากับ <= น้อยกว่าหรือเท่ากับ == เท่ากับ != ไม่เท่ากับ ! ตรงข้ามหรือ Inverse
Decission : if การตัดสินใจเลือกทำหรือไม่ทำคำสั่งภายใต้เงื่อนไข PHP จะทำงานคำสั่งนั้นเมื่อผลการทดสอบเงื่อนไงเป็นจริง รูปแบบ if ( expr เงื่อนไข ) { คำสั่ง; } ตัวอย่าง if ($a > $b) Echo “a มากกว่า b”; if ($b < $c) { $c = $b – 5; $b = $c *2; }
Decission : if … else ทำคำสั่งที่ 1 เมื่อผลการทดสอบเงื่อนไขเป็นจริงหรือทำคำสั่งที่ 2 เมื่อผลการทดสอบเงื่อนไขเป็นเท็จ รูปแบบ If ( เงื่อนไข ) คำสั่งที่ 1; Else คำสั่งที่ 2; เช่น $username = “promlert”; if ($username == “Admin”) Echo “ยินดีต้อนรับ Administrator”; else Echo “ยินดีต้อนรับ User”;
Decision : nested if การใช้เงื่อนไขแบบซ้อน สามารถเป็นไปได้หลายกรณี แต่ในหนึ่งครั้งจะเป็นไม่ได้เพียงกรณีเดียวเท่านั้น กล่าวคือเมื่อ php ทำการทดสอบเงื่อนไขเป็นจริงแล้ว php จะไม่ทดสอบเงื่อนไขอื่นๆ ใน nested if อีกต่อไป รูปแบบ If (เงื่อนไข) คำสั่ง 1; Else if ( เงื่อนไข ) คำสั่ง 2; Else if (เงื่อนไข ) คำสั่ง 3; Else คำสั่ง 4;
ตัวอย่าง if .. If01.php เรียก http://localhost/if01.php?score=75 <html> <body> <h1> nested if example </h1> <? $score = $HTTP_GET_VARS["score"]; echo "From score = $score point<br>"; if ($score >= 80) { echo "Your grade is A <br>"; echo "<font color='#00FF00'>Very Good</font>"; } else if ($score >= 70) echo "Your grade is B <br>"; else if ($score >= 60) echo "Your grade is C <br>"; else if ($score >= 50) echo "Your grade is D <br>"; else echo "Your grade is E <br>"; echo "<font color='#F00000'>Oh my god</font>"; ?> </body> </html> เรียก http://localhost/if01.php?score=75
ตัวอย่าง if … if02.php <html> <body> <h1> nested if example with form</h1> <form method = "GET" action="if02.php"> input score : <input type="text" name="score"><br> <input type="submit" value="Enter"> </form> <? $score = $HTTP_GET_VARS["score"]; echo "From score = $score point<br>"; if ($score != "") if ($score >= 80) { echo "Your grade is A <br>"; echo "<font color='#00FF00'>Very Good</font>"; } else if ($score >= 70) echo "Your grade is B <br>"; else if ($score >= 60) echo "Your grade is C <br>"; else if ($score >= 50) echo "Your grade is D <br>"; else echo "Your grade is E <br>"; echo "<font color='#F00000'>Oh my god</font>"; ?> </body> </html>
Decision : Switch สำหรับทดสอบเงื่อนไขแบบเลือกกระทำโดยที่ตัวแปรสำหรับทดสอบนั้นมีลำดับของค่าอย่างต่อเนื่อง เช่น 1 , 2 , 3 , … , n อย่างใดอย่างหนึ่ง เงื่อนไขต้องเป็นจำนวนหรือค่าอื่นที่มีลำดับก่อนหลัง รูปแบบ switch (ตัวแปร) { case ( ค่าตัวแปร ) : คำสั่ง1; break; case ( ค่าตัวแปร ) : คำสั่ง2; break; case ( ค่าตัวแปร ) : คำสั่ง3; break; } Break สำหรับการบังคับให้ php หยุดการตรวจสอบ case ถัดไป
ตัวอย่าง switch switch($menu) { <html> case 1 : echo "Apple"; break; case 2 : echo "Peach"; case 3 : echo "Banana"; case 4 : echo "Orange"; case 0 : echo “กรุณาเลือก”; } ?> </body> </html> <html> <body> Menu of Fruit<br> 1. Apple <br> 2. Peach <br> 3. Banana <br> 4. Oragne <br> <form action="switch01.php" method="GET"> Enter menu <input type="TEXT" name=“fruit"><br> <input type="submit" value="Enter"> </form> <? echo "You choose : "; $menu = $HTTP_POST_VARS[“fruit"];
แบบฝึกหัด จงเขียนโปรแกรม php แสดงผลเดือนเป็นภาษาไทยโดยให้ php ตรวจจับวันที่ของเครื่อง แล้วแสดงออกมาทางจอภาพ วันที่ ... เดือน ... พ.ศ. ... Function ที่เกี่ยวข้อง $d = date(“d”); $m = date(“m”); $y = date(“Y”); พ.ศ. = ค.ศ. + 543;
การวนซ้ำ (Loop) เป็นคำสั่งที่เกี่ยวข้องกับการทำงานแบบวนซ้ำ เนื่องจากมีกลุ่มคำสั่งบางกลุ่มต้องทำงานซ้ำหลายครั้ง เพื่อป้องกันการทำงานแบบไม่รู้จบ ควรตรวจสอบเงื่อนไขการทำซ้ำ การวนซ้ำสามารถทำซ้อนกันหลายชั้นได้ กลุ่มคำสั่งทำซ้ำ while do … while for … foreach
While รูปแบบ while ( เงื่อนไขการทำซ้ำ ) { คำสั่ง1; คำสั่ง2; } คำสั่งทำซ้ำโดยทำสั่งภายใต้เครื่องหมาย { } จะถูกทำก็ต่อเมื่อผลการทดสอบเงื่อนไขในวงเล็บหลัง while เป็นจริง คำสั่งวนซ้ำแบบนี้จึงอาจมีจำนวนรอบการทำงานเป็น 0
ตัวอย่าง while01.php <? echo "Program will display header 5 lines<br>"; echo "Start<br>"; $num = 1; while ($num <= 5) { echo "<H$num>Headingline size $num</H$num><br>"; $num++; } echo "End."; ?>
ตัวอย่าง While02.php <body> when i is odd color is Green<br> when i is even color is Red<br> <br> <table width=300 border=1 cellpadding=3> <? $i = 1; while ($i <= 20) { if (($i % 2)==0) echo "<tr bgcolor='#F00000'><td> i = $i even </td></tr>"; else echo "<tr bgcolor='#00F000'><td> i = $i odd</td></tr>"; $i++; } ?> </table> </body>
คำสั่ง do …. While ( ) รูปแบบ คำสั่ง1; คำสั่ง2; while ( เงื่อนไข ) โปรแกรมคำสั่งหลัง do จะถูกทำงานก่อนจนหมด เมื่อถึง while ก็จะตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริง ก็จะกลับไปทำซ้ำตั้งแต่ do มาใหม่แต่ถ้าเป็นเท็จก็จะยกเลิกการทำงานออกจาก loop การวนรอบจะเกิดขึ้นอย่างน้อย 1 รอบเสมอ
ตัวอย่าง Dowhile01.php <body> <b>Factorial</b><br> <font color='0000F0'>Please enter number to find factorial</font><br> <form method='GET' action='while04.php'> <input type='text' name='number'> <input type='submit' value='Enter'> </form> <? $number = $HTTP_GET_VARS["number"]; echo "Factorial of $number is : "; $fac = 1; do { $fac = $fac * $number; $number--; } while ($number > 1); echo $fac; ?> </body>
For loop รูปแบบ for (ตัวแปรเริ่ม ค่าเริ่ม ; เงื่อนไข ;การเพิ่มค่า) { คำสั่ง1; คำสั่ง2; } มีจำนวนรอบการทำงานคงที่ ตัวใช้ตัวแปรจำนวนเต็มสำหรับคุมรอบการทำงาน โดยการกำหนดค่าแรกและค่าสุดท้าย การบวกเพิ่มค่า ทุกๆ รอบตัวแปรคุมรอบจะมีการเปลี่ยนค่าอัตโนมัติ เช่น for ( $i = 1;$i <= 10;$i++) echo $i;
ตัวอย่าง for <body> <b>Multiply table</b><br> <font color='0000F0'>Please enter number to table</font><br> <form method='GET' action='for01.php'> <input type='text' name='number'> <input type='submit' value='Enter'> </form> <? $number = $HTTP_GET_VARS["number"]; ?> <table border=1 width='150'> <tr><td bgcolor='#CCCCCC'><?=$number;?></td></tr> for ($i=1;$i<=12;$i++) { echo "<tr><td> $number X $i = "; echo $i*$number; echo "</td></tr>"; } </table>