ตัวดาํ เนินการ ตวั อยาง คําอธิบาย $a-- แสดงคาตัวแปร $a คงเดมิ กอน จากน้นั จงึ ลดคา ของ $a ไป 1 คา ท่ีมา: (อนรรฆนงค คุณมณี, 2555, หนา 38) 3. ตวั ดาํ เนินการกาํ หนดคา (Assignment Operators) เปน ตวั ดําเนินการท่ีใชกําหนดคาของ มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ตวั แปร หรืออาจเขยี นคาํ ส่งั ในรูปแบบยอ ลงมา เชน x += y กค็ อื x = x+y มดี งั น้ี ตารางท่ี 2.4 ตัวดําเนนิ การกาํ หนดคา การกําหนดคา ใหผ ลเหมือนกบั คาํ อธิบาย $a = $b $a = $b กาํ หนดคา ให $a มคี าเทา กบั $b $a += $b $a = $a + $b กําหนดคา ให $a มีคาเทา กับ $a บวก $b $a -= $b $a = $a - $b กําหนดคาให $a มีคา เทากบั $a ลบ $b $a *= $b $a = $a * $b กาํ หนดคา ให $a มีคาเทากับ $a คูณ $b $a /= $b $a = $a / $b กําหนดคาให $a มคี าเทา กับ $a หารดว ย $b $a %= $b $a = $a % $b กาํ หนดคา ให $a มคี า เทา กบั เศษจากผลลัพธข อง $a หาร ดวย $b $a .= $b $a = $a . $b กําหนดคาให $a มเี ทา กบั ขอ ความ $a ตอดวย ขอความ $b ทม่ี า: (อนรรฆนงค คุณมณ,ี 2555, หนา 39) 4. ตัวดาํ เนินการทางตรรกะ (Logical Operators) เปน ตัวดาํ เนนิ การท่ีใชในการเปรียบเทียบ ทางตรรกศาสตรใหผลลัพธอ อกมาเปน คาจริงและเทจ็ ตารางที่ 2.5 ตัวดําเนนิ การทางตรรกะ ตวั ดําเนนิ การ ตวั อยา ง คําอธิบาย and หรอื && $a and $b คืนคา true เมอื่ $a และ $b มคี าเปนจริงท้ังคู นอกนน้ั $a && $b ผลท่ีไดจะเปนเทจ็ or หรอื || $a or $b คนื คา false เมอื่ $a หรือ $b มคี าเปนเท็จท้ังคู นอกนั้น $a || $b ผลท่ีไดจะเปน จรงิ xor $a xor $b คืนคา true เมอ่ื $a กบั $b มีคา ความจริงไมเหมือนกัน ! !$a ใหคา จริงเม่ือคาของตัวแปรเปนเทจ็ และใหคาเท็จเม่ือคา ของตวั แปรเปน จริง ท่ีมา: (อนรรฆนงค คณุ มณ,ี 2555 หนา 40) 29
5. ตัวดําเนินการเปรียบเทียบ (Comparison Operators) เปนตัวดําเนินการที่ใชในการ เปรยี บเทยี บตวั แปรหนึ่งๆ กบั คา คงท่ใี ดๆ โดยผลลพั ธทีไ่ ดจ ากการเปรยี บเทยี บจะเปน คา จรงิ และเทจ็ ตารางท่ี 2.6 ตัวดาํ เนินการเปรียบเทียบ ตวั ดาํ เนินการ ตวั อยา ง คําอธิบาย == $a == $b คนื คา true เมือ่ $a เทา กับ $b มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง=== $a === $bคืนคา true เมอ่ื $a เทากับ $b และ $a กบั $b มี Data Type เดียวกัน != $a != $b คืนคา true เมอ่ื $a ไมเทากับ $b < > $a <> $b คนื คา true เม่ือ $a ไมเทากับ $b !== $a !== $b คนื คา true เมื่อ $a ไมเทา กับ $b หรอื $a กับ $b ไมใ ช Data Type เดยี วกนั < $a < $b คืนคา true เมอ่ื $a นอยกวา $b > $a > $b คืนคา true เมอ่ื $a มากกวา $b <= $a <= $b คืนคา true เมอ่ื $a นอยกวาหรือเทากับ $b >= $a >= $b คืนคา true เมอื่ $a มากกวา หรอื เทา กับ $b ท่ีมา: (อนรรฆนงค คุณมณ,ี 2555, หนา 40) 6. ตัวดําเนินการระดับบิต (Bitwise Operator) เปนตัวดําเนินการท่ีนําบิตของเลขฐานสอง มาดาํ เนินการ โดยนําขอ มูลมาแปลงเปนเลขฐานสองกอนจึงคอ ยนาํ มากระทํากับตัวดาํ เนนิ การ ตารางท่ี 2.7 ตัวดําเนนิ การระดับบิต ตัวดาํ เนนิ การ ชอ่ื ตัวอยา ง & And $c = $a & $b | Or $c = $a | $b ^ Xor $c = $a ^ $b ~ Not $c = ~$b << Shift left $c = $a << $b >> Shift right $c = $a >> $b ทมี่ า: (อนรรฆนงค คณุ มณ,ี 2555, หนา 41) 7. ตัวดําเนินการเชิงขอความ (String Operator) เปนตัวดําเนินการที่เปนสัญลักษณทาง คณติ ศาสตรทีน่ าํ มาใชกับขอความ ดังนี้ 30
ตารางท่ี 2.8 ตวั ดําเนินการเชงิ ขอ ความ ตัวดําเนนิ การ ตัวอยาง คําอธิบาย . $a . $b เชอ่ื มตอขอความ $a กับขอ ความ $b .= $a .= $b นาํ ขอความอน่ื มาเช่อื มตอกบั ขอความเดมิ ทม่ี า: (อนรรฆนงค คณุ มณ,ี 2555, หนา 42) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการใชง านคา คงที่ ในการประมวลผลขอมูลบอยครั้งท่ีเราตองใชขอมูลที่มีคาซํ้าเดิมอยูบอยๆ แทนท่ีเราจะ กําหนดเปน ตวั แปร แตเ ราจะใชก ารกาํ หนดเปน คาคงที่ (Constant) แทน รปู แบบ define(ชอ่ื คา คงท่,ี ขอมลู ทก่ี ําหนดเปนคา คงท่)ี ; สาํ หรบั การกําหนดช่อื คา คงที่เพ่อื ไมใ หเ ปนการสับสนกับช่ือของตัวแปร เรามักจะกําหนดเปน ตวั อักษรพมิ พใ หญทง้ั หมด คา คงท่ีของระบบและตวั แปรระบบ บอยคร้ังท่ีเราตองการทราบขอมูลเกี่ยวกับระบบ เชน เวอรชันของ PHP, ระบบปฏิบัติการท่ี เราใชง าน เปน ตน โดยจะมีคา ระบบที่ใชง านบอย ๆ ดงั นี้ ตารางท่ี 2.9 คา คงทรี่ ะบบ คาคงท่ีระบบ ความหมาย PHP_VERSION เวอรช น่ั หรือรุนภาษาของ PHP PHP_OS ระบบปฏบิ ตั ิการท่ีกาํ ลงั รนั สคริปต PHP TRUE คอื คา จรงิ FALSE คอื คาเทจ็ _FILE_ ชื่อพาธ และชอื่ ไฟลสครปิ ตท ี่กําลงั ใชงาน ทีม่ า: (อนรรฆนงค คุณมณี, 2555, หนา 43) นอกจากคาคงท่ีท่ีใหขอมูลเก่ียวกับระบบแลว ยังมีตัวแปรระบบอยูเชนกันที่จะใหขอมูล เก่ียวกบั ระบบ ซึง่ คาท่ีเปล่ยี นแปลงในตัวแปรเหลานเี้ ราจะไมไดกําหนด แตจะเปนเว็บเซิรฟเวอรเปนผู กําหนดเราเพียงดงึ ขอมลู ขน้ึ มาอา นอยา งเดยี ว มีดงั นี้ 31
ตารางที่ 2.10 ตัวแปรระบบ ความหมาย ตวั แปรระบบ SCRIPT_NAME ช่ือพาธ และช่อื ไฟลสครปิ ตท ่ีกําลังใชงาน SERVER_NAME ช่ือของเซิรฟ เวอร เชน www.myPHPscript.net SERVER_SOFTWARE คือ คา จริง มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง SERVER_PROTOCOL โปรโตคอลดานเน็ตเวริ คท่ีใช SERVER_PORT หมายเลขพอรตทีใ่ ชงาน REQUEST_TIME เวลาทมี่ ีการรองขอใหรนั สคริปต REQUEST_METHOD วธิ ีการเปด สครปิ ตจะเปน GET หรือ POST QUERY_STRING ขอ มลู ท่ีตอทา ย URL เมอ่ื เราเรยี กเปดสคริปตด วยวิธี GET DOCUMENT_ROOT ชื่อพาธเตม็ ๆ ของ root directory HTTP_USER_AGENT ชอ่ื เบราวเ ซอรท ใ่ี ชง าน HTTP_CONNECTION สถานะการเชื่อมตอ HTTP_ACCEPT_LANGUAGE ภาษาสครปิ ตท ่ีสามารถใชงานรวมกนั ได ทม่ี า: (อนรรฆนงค คณุ มณ,ี 2555, หนา 44) (อนรรฆนงค คุณมณ,ี 2555) บทสรปุ ภาษา php เปนภาษาที่ไดรับความนิยมเปนอยางมากในการพัฒนาเว็บไซตแบบ Dynamic Programming ที่สามารถคํานวณโตตอบกับผูใช มีฐานขอมูล และประมวลผลตามเง่ือนไขตาง ๆ ได ซง่ึ บทน้ีเราไดท าํ ความรูจกั กับโครงสรางของภาษา PHP คําสั่งสําหรับแสดงผล รูปแบบการเขียนคําสั่ง PHP การเขียนคําอธบิ าย คําสงวน ขอมูล ตัวแปร และชนิดของขอมูล ตัวดําเนินการ และคาคงที่ของ ภาษา PHP เพอ่ื ชว ยใหเ ว็บไซตม ีความสมบรู ณใ นการทํางาน และรองรบั รปู แบบการทํางานแบบตางๆ 32
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคาํ ถามทบทวน 1. PHP คืออะไร มีความเปน มาอยา งไร 2. PHP มลี ักษณะเดน อยา งไร 3. โครงสรา งของภาษา PHP มกี ่ีรปู แบบอะไรบาง 4. จงยกตัวอยา งคําสงั่ สําหรบั แสดงผลในภาษา PHP 5. PHP มรี ูปแบบการเขียนก่วี ิธี อะไรบาง 6. การแทรกคาํ อธิบายมปี ระโยชนอยา งไร มีกว่ี ธิ ี อะไรบา ง 7. จงอธิบายความหมายของตัวแปร (Variable) 8. ตวั แปร (Variable) มีกี่ชนิด อะไรบาง 9. การประกาศตัวแปรในภาษา PHP มีขอกาํ หนดอยางไร 10. ชนิดของตวั แปรในภาษา PHP มกี ี่ชนดิ อะไรบา ง 33
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงเอกสารอา งอิง คะชา ชาญศิลป. (2553). คูมือเรียน WEB Programming ดวย PHP, MySQL และ AJAX. กรุงเทพฯ : โปรวิชน่ั . บญั ชา ปะสลี ะเตสงั . (2557). พัฒนาเว็บแอปพลิเคชัน่ ดวย PHP รวมกับ MySQL และ jQuery. กรงุ เทพฯ : ซเี อด็ ยูเคชนั่ . ปรญิ ญา นอยดอนไพร. (2556). การเขียนโปรแกรมบนเว็บดวย PHP รว มกบั ฐานขอมูล MySQL. สรุ าษฎรธ านี : มหาวทิ ยาลยั ราชภัฏสรุ าษฎรธ าน.ี อนรรฆนงค คุณมณี. (2555). พัฒนาเวบ็ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบุรี : ไอซีดี. 34
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจําบทท่ี 3 หัวขอ เนอื้ หา 1. สวนประกอบของประโยคภาษา PHP 2. คาํ สง่ั ควบคมุ ทิศทางการทํางาน 3. การใชคําสัง่ if 4. การใชค าํ สงั่ if else 5. การใชค าํ สง่ั else if 6. การใชคาํ สงั่ switch 7. คาํ สงั่ วนซํา้ หรือการทําซา้ํ (Loop) 8. คําสัง่ for 9. คาํ ส่งั while 10. คาํ สง่ั do… while 11. วนรอบสมาชิกทุกตัวในอารเรยด ว ย foreach 12. คําสัง่ ออกจากการทํางานดว ย continue, exit และ break วัตถปุ ระสงคเชิงพฤติกรรม เมอื่ นักศกึ ษาเรียนจบบทเรยี นน้ีแลว สามารถ 1. อธิบายสวนประกอบของประโยคภาษา PHP ได 2. อธบิ ายคําส่งั ควบคมุ ทิศทางการทาํ งานได 3. อธบิ ายคําส่ังวนซํา้ หรือการทําซ้าํ ได 4. อธิบายคาํ สงั่ ออกจากการทาํ งานได 5. สามารถเขยี นโปรแกรมคําส่งั ควบคมุ ทิศทางการทาํ งานได 6. สามารถเขยี นโปรแกรมวนซา้ํ หรือการทําซ้ําได วิธสี อนและกจิ กรรมการเรยี นการสอน 1. วิธสี อน 1.1 วธิ กี ารสอนแบบบรรยาย โดยใหนกั ศกึ ษาฟงบรรยายจากเอกสารประกอบการสอน วิชา การพฒั นาฐานขอมูลบนเวบ็ 1.2 อภปิ รายรว มกนั ในช้นั เรยี น 1.3 กิจกรรมกลมุ 35
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 2. กจิ กรรมการเรียนการสอน 2.1 คาํ ถามทบทวน 2.2 แบบฝก ปฏบิ ตั ิ 2.3 Active Learning แบบ PLC 2.4 เกมตอบคาํ ถามบน Kahoot สื่อการเรยี นการสอน 1. เอกสารประกอบการสอน วชิ า การพัฒนาฐานขอ มลู บนเว็บ 2. เวบ็ ไซตท่มี เี นื้อหาเกีย่ วของกับรายวชิ า 3. สื่อสงั คมออนไลน 4. เกมออนไลน Kahoot การวดั ผลและการประเมินผล 1. สงั เกตการณม ีสวนรว ม การรว มกจิ กรรม และการตอบคาํ ถาม 2. การทํางานตามที่ไดร ับมอบหมาย 3. การทาํ คําถามทบทวน 4. การทาํ แบบฝกปฏิบัติ การเขยี นคาํ สง่ั ควบคุมทิศทาง และการทาํ ซํา้ 36
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทที่ 3 การเขยี นคาํ สง่ั ควบคมุ ทศิ ทาง และการทําซ้าํ ในการเขียนโปรแกรม อาจมีเง่ือนไขหรือขอกําหนดบางอยางท่ีผูใชตองการใหโปรแกรม ทํางานแตกตางกันไป การตัดสินใจจึงเปนกระบวนการท่ีสําคัญมากทั้งในชีวิตประจําวันและการเขียน โปรแกรม ยกตัวอยางเชน ถา คุณมีเงนิ มากกวา 100 บาท คุณจะซอ้ื วิดีโอเกม แตถาคุณมีเงินไมพอคุณ จะซือ้ หนังสอื แทน เปนตน หากผพู ฒั นาตอ งการพัฒนาเวบ็ ไซตท ม่ี ฟี ง กชันการทํางานท่ีสามารถโตตอบ กับผูใชไดอยางมีประสิทธิภาพ พ้ืนฐานการเขียนคําส่ังควบคุมทิศทางการทํางาน จึงเปนส่ิงสําคัญ เบอ้ื งตน ทต่ี อ งศึกษาและทําความเขา ใจ สว นประกอบของประโยคภาษา PHP การเขียนภาษา PHP ภายใน 1 ไฟล ตองประกอบดว ย 3 สว นหลกั ดงั น้ี 1. Expression คอื การกาํ หนดคา ของตัวแปรหน่ึงๆ เชน $a = 5 2. Statement คือ เงื่อนไขในการนํา Expression มาใชงาน อาจเปนประโยคท่ีมีความ หลากหลายในรูปแบบการทํางาน ซ่งึ กค็ อื ประโยคควบคุมการทาํ งานของโปรแกรมนนั่ เอง 3. Function คือ คาํ สงั่ หรือชุดคาํ ส่งั ทใ่ี ชใ นโปรแกรม อาจเปน ฟง กช ันสําเร็จรูปในภาษา PHP หรืออาจเปน ฟงกชันท่ผี พู ัฒนาไดส รา งเกบ็ ไวเพื่อเรยี กใชงานในภายหลัง คาํ สัง่ ควบคมุ ทิศทางการทาํ งาน การใชคําสงั่ if คําสงั่ if ใชใ นการเปรียบเทยี บเง่ือนไขวาตรงตามที่ตองการหรือไม หากตรงกับเง่ือนไข จะทํา ตามคําสงั่ ทก่ี ําหนดไวแตห ากไมตรงกบั เงื่อนไขก็จะขา มไปยังคําส่ังถัดไป โดยมรี ปู แบบการเขยี นดังนี้ if (เงื่อนไข) { ส่งิ ทีต่ องทาํ เม่ือเงอื่ นไขเปนจริง } 37
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยา งการใช if แบบเงื่อนไขเดียว if ($a>5) { echo “ตัวแปร a มากกวา 5” ;”; } ตวั อยา งการใช if แบบหลายเง่อื นไข if ($a>5 && $a!=0) { echo “ตวั แปร a มากกวา 5 และไม เทากับ 0” ;”; } การใชค ําสัง่ if else คําสั่ง if else นั้น เปนการกําหนดทางเลือกอ่ืนๆ กรณีโปรแกรมน้ันไมตรงกับเงื่อนไขที่อยูใน if โปรแกรมก็จะทํางานคําสั่งตางๆ ที่อยูในวงเล็บปกกาของ else แทน ซึ่งโครงสรางของ if else มี รูปแบบ ดงั น้ี if (เงอื่ นไข) { สิ่งท่ีตอ งทาํ เม่ือเง่อื นไขเปนจริง } else { ส่งิ ทตี่ อ งทาํ เมือ่ เงอ่ื นไขเปนเทจ็ } 38
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งการใช if else $a = 6; if ($a>5) { echo “ตวั แปร a มากกวา 5” ;” //แสดงบรรทดั นีก้ รณตี รงตามเงอื่ นไข if } else { echo “ตัวแปร a นอยกวา หรือเทา กับ 5” ;”;//แสดงบรรทัดนก้ี รณไี มต รงตามเง่ือนไข if } จากตวั อยางดานบน จะแสดงผลลัพธ “ตัวแปร a มากกวา 5” เนื่องจาก $a มีคาเทากับ 6 ซงึ่ มากกวา 5 จึงตรงตามเงื่อนไข if ซง่ึ คา ท่ีไดจ ากการพิจารณาเงอื่ นไขใน if มดี ังน้ี - คา จรงิ (True) หมายถงึ ผลการเปรียบเทียบไดคาทีต่ รงตามเงื่อนไข - คาเท็จ (False) หมายถงึ ผลการเปรยี บเทียบไดค าทไี่ มต รงตามเง่อื นไข การใชค าํ สั่ง else if การใชเงื่อนไข else if เราจะใชในกรณีท่ีมีเงื่อนไขคําส่ังเยอะๆ ซึ่งแตละเง่ือนไขน้ันแตกตาง กนั ซงึ่ สามารถพูดไดว า else if นั้นเปนสง่ิ ทมี่ าเสริมใหกบั คาํ สงั่ if นน้ั สมบรู ณรัดกุมกับเงื่อนไขมากขึ้น เราสามารถเขียน else if เพิ่มมาก่ีอันก็ได แตตองใชควบคูกับ if เสมอ (หามเขียนโดยไมมี if) อีกท้ัง เรายังสามารถนํามาใชค วบคูกบั if else ไดดวย แบบวา หากไมเ ขาเง่ือนไขขอใดขอหนึ่งก็ตองเขา else ซง่ึ เราสามารถเขยี นโครงสรา ง else if ไดด งั น้ี if (เง่ือนไขที่ 1) { ส่งิ ท่ตี องทาํ เมือ่ เง่อื นไขท่ี 1 เปนจริง } else if (เง่อื นไขท่ี 2) { สิ่งท่ตี องทาํ เมอ่ื เงอื่ นไขท่ี 2 เปนจริง } else { สิง่ ทีต่ อ งทาํ เมื่อไมตรงตามเง่ือนไขทง้ั 2 ที่กาํ หนด } 39
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงขอสังเกต else ตอ งอยูทายเสมอ else if จะอยูต รงกลางระหวาง if กับ else ตวั อยางการใชเงอ่ื นไข else if กับโปรแกรมตัดเกรด $score = 77 If ($score>=80) { $grade = “A” ; } else if ($score>=70) { $grade = “B” ; } else if ($score>=60) { $grade = “C” ; } else if ($score>=50) { $grade = “D” ; } else { $grade = “E” ; } echo “คะแนนของคณุ คอื ”. $score. “ดังนน้ั เกรดทไ่ี ด คือ”. $grade ; จากชดุ คาํ ส่ังดา นบนจะไดผลลัพธค ือขอ ความ ดังนี้ คะแนนของคุณ คือ 77 ดงั นน้ั เกรดที่ได คอื B การใชคาํ สั่ง switch บางกรณีถาตองการตรวจสอบเง่ือนไขจํานวนมากๆ สามารถใชคําส่ัง Switch ได โดยมี รปู แบบการเขยี น ดงั น้ี switch ($a) { case 1 : คาํ สัง่ PHP ; // ถา $a มีคา เทากบั 1; break; case 2 : คาํ ส่ัง PHP ; // ถา $a มีคา เทากับ 2; break; default : คาํ สงั่ PHP ; // ถา $a ไมเทากับ 1 หรือ 2; } จากชุดคําส่ังดานบนการทํางานของคําสั่งนี้เร่ิมตนจาก ตรวจสอบตัวแปร $a ถาเทากับ 1 โปรแกรมจะเขาไปรันคําส่ัง PHP ใน case 1 เม่ือรันคําส่ังเสร็จแลวก็จะออกจากคําส่ัง switch ทันที ดวยคําส่ัง break; 40
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งการใชค าํ สัง่ switch switch ($a) { case 1 : echo “No.1”; break; case 2 : echo “No.2”; break; case 3 : echo “No.3”; break; default : echo “ไมใช No.1, No.2 และ No.3”; } คาํ ส่ังวนซ้ําหรือการทาํ ซาํ้ (Loop) การเขียนโปรแกรม หลักการวนซํ้าหรือทําซ้ํานั้นเปนสิ่งที่สําคัญในการที่จะทําใหโปรแกรม สามารถทํางานดวยคําสั่งเดิมซ้ําๆไดอยางมีประสิทธิภาพ ยกตัวอยาง เชน การแสดงรายช่ือของ สมาชกิ ของเวบ็ ไซตจํานวน 20 คน นี่เปนตัวอยางที่ตองใชคําสั่งวนซํ้าในการจัดการ โดยมีแนวคิดท่ีวา เม่อื คุณสามารถแสดงขอ มลู ของสมาชกิ คนแรกไดแ ลว คนตอ ไปกส็ ามารถทําในแบบเดียวกันได ซ่ึงการ เขียนคําสั่งวนซ้ําหรือการทําซํ้า (Loop) น้ันเปนพื้นฐานที่จําเปนตองใชในทุกภาษา โดยมีใหเลือกใช หลายรปู แบบ ดังนี้ คําสัง่ for เปนการวนซ้าํ ดว ยจํานวนรอบการวนซ้ําท่ีแนนอน ซึ่งคําสั่งนี้จะใชตัวแปรนับจํานวนรอบของ การวนซา้ํ มกี ารกําหนดเงื่อนไขการสน้ิ สุดการทําซ้ํา และมีการเพิ่มคาตัวแปรการนับรอบขึ้นในทุกครั้ง ที่วนซํ้า รูปแบบการใชคาํ สั่ง for for (ประกาศตัวแปรสําหรบั เริ่มตน ; จดุ สนิ้ สุดของการทาํ ซ้ํา; การเปล่ยี นแปลงคาของตัวแปร) { คําส่ังท่ีตอ งการใหทําซํ้า ; } 41
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการทาํ งานของคาํ สั่ง for 1. ต้งั คาจดุ เรมิ่ ตน และสน้ิ สดุ ของโปรแกรม 2. เรม่ิ ทํางานตามคําสัง่ ของโปรแกรม 1 ครงั้ และเปลี่ยนแปลงคาเร่ิมตน ของตัวแปรซึ่ง เปรียบเสมอื นการนับรอบ 3. กลับไปตรวจสอบวา คา ใหมทไ่ี ดม ีคา เทากับจดุ ส้ินสุดของโปรแกรมหรือยัง ถายังใหท าํ ตามคําสงั่ ของโปรแกรมตอไป ทํางานวนซาํ้ ในขอ 1-3 จนกวา จะมีคา เทา กับจุดสิน้ สดุ ของโปรแกรมจงึ ออกจากการวนซํ้าและไปทําคําสัง่ ถัดไป ตัวอยางการใชคาํ สงั่ for <?php for ($a=0; $a<=9; $a++) { echo “วนรอบคร้ังท่ี : ” , $a+1 , “ สุมตัวเลขได ” , rand(0,9) , “<br>” ; } ?> สาํ หรบั ตัวอยางนี้เปน การวนรอบดวยคาํ ส่งั for โดยใชต ัวแปร $a ทําหนา ที่นับการวนรอบ แตล ะรอบมีการสุมตวั เลขขึ้นมาแลว แสดงตวั เลขทส่ี มุ ขึ้นมาดว ย 1. ใชค าํ ส่งั for วนรอบโดยมีตัวแปร $a นบั การวนรอบเริ่มตน การวนรอบที่ 0 และส้นิ สุดที่ 9 มกี าร เพม่ิ คาตวั แปร $a ทีละหน่งึ 2. แสดงคา $a+1 และแสดงสุมตัวเลขที่มคี า ระหวา ง 0-9 ออกมา ผลการทาํ งานเปน ดงั นี้ ภาพประกอบท่ี 3.1 ผลการทํางานของการใชคาํ สัง่ for ทีม่ า: (ภาพโดยผูเขยี น, 2564) 42
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคาํ สัง่ while เปน การวนซํา้ จนกวา เงื่อนไขจะเปน เทจ็ เปน การวนซ้าํ ดว ยจาํ นวนรอบทไี่ มแ นนอน จะตอง ตรวจสอบเง่ือนไขวา จะวนซํ้าตอไปหรือไม หากเง่ือนไขยังเปน จรงิ อยจู ะวนซ้าํ ตอไป แตถาเงอื่ นไขเปน เทจ็ กจ็ ะหยดุ การวนซํา้ รูปแบบการใชคําสัง่ while while (เงอื่ นไข) { คาํ สั่งทตี่ อ งการใหโปรแกรมทํา } การทํางานของคาํ สั่ง while 1. จะตรวจสอบตัวแปรกอนวา ตรงตามเง่ือนไขหรือไม ถาตัวแปรตรงตามเงื่อนไขจะเขา ไปทาํ ตามคําสัง่ ภายในวงเล็บปกกา ซง่ึ จะมีการเปลีย่ นแปลงคา ของตัวแปรภายในวงเลบ็ ปกกา 2. หลงั จากน้ันนําตวั แปรใหมทไ่ี ดก ลบั มาตรวจสอบเง่ือนไขอีกครั้ง ถายังเปน จรงิ กเ็ ขาไปทาํ ตามคําสง่ั ท่ี อยใู นวงเล็บปก กาอีก ทาํ งานวนซ้าํ จนกวาเงอ่ื นไขจะเปนเท็จ ตัวอยางการใชคาํ สงั่ while <?php $a=1; $b= rand(3,12); // สุม คา ระหวา ง 3 ถงึ 12 echo “ตัวแปร a ใชนบั รอบ = ” , $a , “ ตัวแปร b ใชเ ปนจุดหยุดในการวนซํา้ = ”, $b , “<hr>”; while ($a<=$b) { echo “วนรอบครั้งท่ี : ” , $a , “<br>” ; $a++; } ?> สําหรบั ตัวอยา งนเ้ี ปน การวนรอบดวยคําส่งั while มกี ารทาํ งาน ดงั น้ี 1. กําหนดคาของตัวแปร $a = 1 เปน คาเรมิ่ ตน และสมุ ตวั เลขระหวาง 3 ถึง 12 2. แสดงคา ของตัวแปร $a และ $b ที่ไดจากการสมุ 3. คําสง่ั while ตรวจสอบเง่ือนไขคา ตัวแปร $a นอ ยกวาหรือเทากับ $b หรอื ไม ถาเปนจริงจะเขา ไป ทําตามคําส่งั ที่อยใู นวงเลบ็ ปกกา คือแสดงคา คา ตวั แปร $a แลวเพ่มิ คา ตวั แปร $a ทีละหน่ึงไปเร่ือยๆ ทาํ งานวนซํ้าจนกวาเงื่อนไขจะเปน เทจ็ จงึ หยุดการทาํ งาน 43
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลการทาํ งานเปน ดังน้ี ภาพประกอบท่ี 3.2 ผลการทํางานของการใชคําสงั่ while ทม่ี า: (ภาพโดยผูเขยี น, 2564) คาํ ส่งั do… while มกี ารทํางานคลายคําสัง่ while แตตา งกนั ตรงที่คาํ สง่ั do… while จะไมมีการตรวจสอบ เง่อื นไขการวนซ้ํากอนเขา สกู ารทาํ งานในรอบแรก แตจ ะตรวจสอบเง่อื นไขเม่ือทํางานตามคําส่งั เสรจ็ ไปแลว อยางนอย 1 รอบ รูปแบบการใชค ําส่ัง do… while do { คําสง่ั ทตี่ อ งการใหโ ปรแกรมทํา ; การเปลี่ยนแปลงคาของตวั แปร ; } while (เง่ือนไข) 44
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งการใชค าํ สัง่ do… while <?php $a=1; $b= rand(3,12); // สมุ คา ระหวาง 3 ถงึ 12 echo “ตัวแปร a ใชน บั รอบ = ” , $a , “ ตวั แปร b ใชเปน จดุ หยดุ ในการวนซํ้า = ”, $b , “<hr>”; do { echo “วนรอบครงั้ ท่ี : ” , $a , “<br>” ; $a++; } while ($a<=$b) ?> สําหรบั ตัวอยางน้ีเปนการวนรอบดว ยคําสง่ั do… while มกี ารทาํ งาน ดงั น้ี 1. กาํ หนดคาของตัวแปร $a = 1 เปน คาเรมิ่ ตน และสุมตัวเลขระหวา ง 3 ถึง 12 2. แสดงคา ของตัวแปร $a และ $b ที่ไดจ ากการสุม 3. คาํ สัง่ do จะแสดงผลการวนรอบออกทางหนาจอ และเพ่ิมคา ตวั แปร $a กอนที่จะนาํ ไป เปรยี บเทียบเงอื่ นไขเพื่อทํางานในรอบตอไป 4. ในสวนของ while จะมเี ง่อื นไขตรวจสอบการวนรอบ ผลการทาํ งานเปน ดังนี้ ภาพประกอบที่ 3.3 ผลการทํางานของการใชคาํ สงั่ do… while ทม่ี า: (ภาพโดยผูเ ขียน, 2564) 45
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงวนรอบสมาชกิ ทุกตัวในอารเรยด ว ย foreach รูปแบบการใชค าํ สง่ั foreach foreach ($ตัวแปรอารเ รย as $ตัวแปรทเ่ี กบ็ คาอารเ รย) { คาํ สง่ั ใดๆ ; } แตละรอบของการวนซ้ํา คําสั่ง foreach จะดึงขอมูลจากสมาชิกแตละตัวของตัวแปร อารเรยมาใสในตัวแปรที่เก็บคาสมาชิกทีละตัว โดยจะดึงมาต้ังแตอินเด็กซตัวแรกไปจนถึงอินเด็กซตัว สุดทา ยซึ่งจะเปลยี่ นแปลงคาตลอด ตัวอยางการใชค าํ สง่ั foreach <?php $month= array(“มกราคม”, “กมุ ภาพนั ธ”, “มนี าคม”, “เมษายน”); $b= 0; foreach ($month as $x) { echo “อารเรย\\$month[$b] = $x <br>”; $b++; } ?> ผลการทาํ งานเปน ดงั น้ี ภาพประกอบท่ี 3.4 ผลการทํางานของการใชคําส่งั foreach ท่มี า: (ภาพโดยผเู ขียน, 2564) 46
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคําสัง่ ออกจากการทํางานดวย continue, exit และ break เมอื่ มีการทํางานแบบวนซํ้า บางคร้ังอาจจําเปนตองหยุดการทํางานน้ันทันที หรือออกจาก การทาํ งานทันที ซ่งึ สามารถทําไดโดยกลุมคําสั่งทใ่ี ชก ระโดดขา มการทํางาน ดังนี้ - คาํ สัง่ break เปนคําสงั่ ทจี่ ะกระโดดออกจากการทํางานน้นั ไปเลย - คําส่ัง continue เปนคําสั่งท่ีคลายกับ break แตใชเฉพาะกับการวนซํ้าเทาน้ัน ถาเจอ คาํ สง่ั นแี้ ลวจะถอื วา การวนซํ้าในรอบนน้ั เสรจ็ สิน้ จะกระโดดไปสูการวนซํ้าในรอบถัดไป โดยท่ีไมสนใจ คําสง่ั ทเี่ หลืออยใู นการวนซํ้ารอบนนั้ ๆ - คาํ สั่ง exit เปนการจบการทํางานของไฟลส คริปตน ัน้ ไปทันที (อนรรฆนงค คุณมณี, 2555) บทสรุป ในการเขียนโปรแกรม อาจมีเงื่อนไขหรือขอกําหนดบางอยางที่ผูใชตองการใหโปรแกรม ทาํ งานแตกตางกันไป การตัดสินใจจึงเปนกระบวนการที่สําคัญมากท้ังในชีวิตประจําวันและการเขียน โปรแกรม หากผูพ ฒั นาตอ งการพัฒนาเวบ็ ไซตท ี่มฟี งกช นั การทาํ งานทสี่ ามารถโตตอบกับผูใชไดอยางมี ประสิทธิภาพ พื้นฐานการเขียนคําสั่งควบคุมทิศทางการทํางาน ไดแก if , if else , else if , switch ซงึ่ เปนคําสั่งที่ใชในการเปรียบเทียบเงื่อนไขเพ่ือควบคุมทิศทางในการทํางานของโปรแกรม และคําสั่ง วนซาํ้ หรือทาํ ซา้ํ นัน้ เปน สิง่ ท่ีสําคญั ในการท่จี ะทาํ ใหโปรแกรมสามารถทํางานดวยคําสั่งเดิมซํ้าๆไดอยาง มปี ระสทิ ธิภาพ ไดแก for, while, do.. while, foreach คําสั่งออกจากการทํางาน ไดแก continue, exit และ break ซ่ึงคําส่ังเหลานี้เปนพื้นฐานสําคัญที่ใชในการเขียนโปรแกรมเพ่ือใหโปรแกรมทํางาน ไดอยางมปี ระสทิ ธิภาพตามตองการ คําถามทบทวน 1. คาํ สงั่ ทใ่ี ชใ นการควบคุมทศิ ทางการทาํ งาน มอี ะไรบาง แตกตา งกนั อยางไร 2. คําสั่งวนซา้ํ หรือทําซ้ํา มอี ะไรบาง แตกตางกนั อยา งไร 3. คําส่ังออกจากการทาํ งาน มีอะไรบา ง แตกตา งกันอยางไร 4. การเขยี นโปรแกรมเพื่อคัดเลอื กบุคคลเขาทํางานของบริษัทแหงหนึง่ มเี งื่อนไขวา ถา สอบขอ เขยี น ผาน ใหมาสอบสัมภาษณในวันทําการถัดไป ควรใชคําสงั่ ควบคมุ อะไร เพราะอะไร 5. การเขียนโปรแกรมเพื่อคาํ นวณคานายหนาใหกบั พนักงานขาย โดยมเี งอ่ื นไขในการคํานวณคา นายหนา คอื ถา ยอดขายนอ ยกวา หรือเทากับ 500,000 บาท จะไดรับคา นายหนา 5% ของยอดขาย ถา ยอดขายมากกวา 500,000 บาท จะไดรับคา นายหนา 10% ของยอดขาย ควรใชคําส่ังควบคมุ อะไร เพราะอะไร 6. จากโคดตอ ไปนี้ผลลัพธที่ไดคือเทาใด 47
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง <?php $x=3; $y=1; if ($x == $y) $x=$y; else $x += $y; echo \"x = \".$x; ?> 7. จากโคดตอ ไปน้ีผลลพั ธท่ไี ดคอื เทา ใด <?php $x=100; $i=1; $y=5; while($x<=100) { $x= $x+$y*$i; si=$i+1; } echo \"x= $x , y= $y , i= $i\"; ?> 8. จงอธิบายการทาํ งานของโปรแกรม <?php for ($i = 1; $i <= 100; $i++ ) { echo $i . \"<br>\"; } ?> 48
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง9. foreach คืออะไร 10. จากโปรแกรมคา $i ผลลัพธที่ไดมีคาเทา ใด <?php $i=0; do { echo \"Hello ... <br>\"; if ($i == 5) { break; $i++; } } while ($i<7); echo $i; ?> เอกสารอางอิง อนรรฆนงค คุณมณ.ี (2555). พฒั นาเว็บ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบรุ ี : ไอซดี ี. 49
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจาํ บทที่ 4 หวั ขอเนอ้ื หา 1. ฟง กชันคืออะไร 2. ประเภทของฟง กชัน 3. สว นประกอบของฟง กชัน 4. การสรางฟงกชันไวใชง านและวิธกี ารเรียกใชงานฟง กชนั 5. ตวั แปรสงและตัวแปรรบั 6. การสง ผา นคา ของตัวแปรใหแ กฟง กชนั 7. การคนื คา จากฟงกช นั 8. ขอบเขตการเรยี กใชตัวแปร 9. ฟงกชนั เรยี กใชตัวเอง (Recursive Function) 10. ฟงกชนั include 11. ฟงกช นั function_exists 12. ฟง กชนั มาตรฐานของภาษา PHP 13. ฟงกช ันเก่ียวกบั คณิตศาสตร 14. ฟงกชันเกยี่ วกบั เวลาและวนั ท่ี 15. ฟง กช ันเกี่ยวกบั สตริง วตั ถปุ ระสงคเชิงพฤติกรรม เมือ่ นกั ศกึ ษาเรยี นจบบทเรยี นน้แี ลว สามารถ 1. บอกความหมายและประเภทของฟง กช นั ได 2. บอกสวนประกอบของฟง กชันได 3. อธิบายวิธกี ารสรางฟง กชันและวิธีการเรียกใชงานฟง กชันได 4. อธิบายตวั แปรสง และตวั แปรรับของฟง กช ันได 5. อธิบายการสง ผานคา ของตวั แปรใหแกฟง กช นั ได 6. อธิบายวธิ ีการคนื คา จากฟงกชันได 7. บอกขอบเขตการเรยี กใชตัวแปรของฟงกชนั ได 8. อธบิ ายหลักการทาํ งานของฟงกช ันเรียกใชตัวเอง 9. อธิบายหลกั การทํางานของฟงกชนั include ได 10. อธบิ ายหลกั การทาํ งานของ function_exists ได 11. บอกฟงกช ันเกี่ยวกับคณิตศาสตรแ ละอธบิ ายวิธกี ารใชง านได 50
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 12. บอกฟงกช นั เกยี่ วกบั เวลาและวนั ทแ่ี ละอธิบายวธิ กี ารใชงานได 13. บอกฟงกช ันเกี่ยวกับสตริงและอธิบายวิธกี ารใชง านได วธิ ีสอนและกจิ กรรมการเรียนการสอน 1. วิธีสอน 1.1 วธิ กี ารสอนแบบบรรยาย โดยใหนักศกึ ษาฟงบรรยายจากเอกสารประกอบการสอน วชิ า การพฒั นาฐานขอ มูลบนเวบ็ 1.2 อภิปรายรวมกันในช้นั เรียน 1.3 รว มกิจกรรมเกมออนไลน ถาม-ตอบ 2. กิจกรรมการเรียนการสอน 2.1 คําถามทบทวน 2.2 แบบฝก ปฏบิ ัติ เรอ่ื ง การสรา งฟง กช ันในภาษา PHP 2.3 Active Learning แบบ PLC 2.4 กจิ กรรมเกมออนไลน ถาม-ตอบ สอ่ื การเรียนการสอน 1. เอกสารประกอบการสอน วชิ า การพัฒนาฐานขอมูลบนเวบ็ 2. เวบ็ ไซตท ่มี เี นอื้ หาเกย่ี วของกบั รายวชิ า 3. ส่ือสงั คมออนไลน 4. เกมออนไลน ถาม-ตอบ การวดั ผลและการประเมนิ ผล 1. สังเกตการณมีสว นรวมและการถาม-ตอบ 2. การทาํ งานตามท่ีไดร ับมอบหมาย 3. การทําคาํ ถามทบทวน 4. การทาํ แบบฝก ปฏิบัติ เร่อื ง การสรางฟง กช ันในภาษา PHP 51
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทที่ 4 การใชงานฟงกชนั ในการเขียนโปรแกรมบางโปรแกรมมีความจําเปนตองทํางานในลักษณะเดิมซํ้า ๆ กันอยูใน แตละสวนของโปรแกรม ชุดคําส่ังที่ทํางานซ้ํา ๆ กันน้ัน ทําใหตองเสียเวลาในการพิมพคําส่ังเดิมทุก ครั้งท่ีตองการ ซ่ึงมีโอกาสที่จะทําใหเกิดขอผิดพลาดข้ึนไดระหวางการเขียนโปรแกรม โดยการเขียน โปรแกรมน้ันสามารถแยกชุดคําสั่งท่ีใชบอย ๆ หรือซ้ํา ๆ กันน้ีออกมา แลวสรางข้ึนเปน ฟงกชัน (Functions) เอาไวเรียกใชงาน ทําใหไมจําเปนตองเขียนชุดคําส่ังนั้น ซ้ํา ๆ กันอีก เพ่ือลดระยะเวลา และลดขอผิดพลาดที่อาจเกิดข้ึนในการเขียนโปรแกรม โดยจะกลาวถึงฟงกชัน (Functions) ในภาษา PHP มีรายละเอียด ดงั น้ี ฟงกชันคืออะไร ฟงกชัน (Functions) คือ การเขียนคําส่ังยอย ๆ ไวในบล็อกของคําส่ังเพ่ือทํางานช้ินเล็ก ๆ ใหส าํ เรจ็ และสามารถนําไปทาํ งานรว มกับคาํ สง่ั หรอื ฟง กชันอนื่ ๆ ในโปรแกรมใหโ ปรแกรมสมบูรณไ ด ประเภทของฟงกชนั ฟงกช ันใน PHP แบง ออกเปน 2 ประเภทคือ 1. ฟงกชันที่ผูใชงานสรางข้ึนเอง (User Defined Function) เปนฟงกชันท่ีผูพัฒนาสราง ข้นึ มาเอง โดยการระบรุ ปู แบบการทาํ งานไดตามความตองการ 2. ฟงกชันมาตรฐานของภาษา PHP (Built - in Functions) เปนฟงกชันมาตรฐานท่ีมีอยู แลวในภาษา PHP ใชในงานท่ัวไป สามารถเรียกใชงานไดเลยโดยไมตองสรางฟงกชันข้ึนมาใหม เชน ฟง กชัน print สําหรบั แสดงผลฟงกช นั ทใี่ ชใ นการจัดการไฟล เปน ตน สําหรับฟงกชันที่เราจะศึกษากันในหัวขอตอไป คือ การใชงานฟงกชันท่ีผูใชงานสรางข้ึนเอง (User Defined Function) ซึ่งเราจะศึกษาถึงวิธีการสรางฟงกชันไวใชงาน, วิธีการเรียกฟงกชัน, รูปแบบการคืนคาฟงกชัน, การสงผานคาของตัวแปรใหกับฟงกชันท้ังแบบภายในและภายนอก และ การใชงานฟง กช ันเรยี กใชต วั เอง 52
สวนประกอบของฟง กชนั สวนประกอบของฟง กช นั ภายในโปรแกรมจะแบง เปน 2 สว น ดงั นี้ function ชอ่ื ฟง กช นั (พารามิเตอร) { คาํ ส่งั ในฟงกชัน ; การคนื คาของฟง กชนั ; } ชอ่ื ฟงกชัน(อารกิวเมนต) ; มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง สวนการประกาศฟง กช ัน สวนการเรยี กใชฟ งกชนั สว นการประกาศฟงกชัน ประกอบดวย - ชือ่ ฟงกชนั ใชสาํ หรับเวลาทต่ี อ งการเรยี กใชฟ งกชนั - พารามิเตอร หรือตัวแปรสง เปนตัวแปรท่ีฟงกชันสรางไวเพ่ือรับคาที่จะสงเขามาใหกับ ฟงกช นั - คาํ สั่งในฟง กชนั เปนคาํ สัง่ ท่ีสง่ั ใหฟง กชนั ทํางาน - การคืนคาของฟง กชนั (มีหรือไมม ีกไ็ ด) สว นการเรียกใชฟง กชัน ประกอบดวย - ชอ่ื ฟงกช ัน เปน ช่ือทีใ่ ชเ รยี กฟงกชนั มาใชงาน - อากิวเมนต หรือตวั แปรรับ คอื ตวั แปรทต่ี องการสงคามาใหก ับฟงกช นั การสรา งฟง กช นั ไวใชง านและวธิ กี ารเรียกใชง านฟง กช นั ในการสรางฟงกชันนั้นสิ่งแรกที่ตองทําความรูจักคือ การต้ังชื่อฟงกชัน, ตัวแปรรับ และตัว แปรสง ในการตง้ั ช่อื ฟงกชันจะคลา ยๆ กับการต้งั ชื่อตัวแปร ดงั น้ี - ชอื่ ของฟง กช ันควรจะสมั พนั ธก ับการทํางานของฟงกชนั - ชือ่ ฟง กช นั ตอ งไมซ า้ํ กัน - ชอ่ื ฟง กชันสามารถเปนตัวอกั ษร ตวั เลข เสน ขดี ลา ง (_) ได แตหา มข้นึ ตนดวยตัวเลข 53
ตัวแปรสงและตัวแปรรบั กอ นท่ีเราจะสรางฟง กชันจะตองทาํ ความรูจ กั กับตัวแปร 2 ประเภท คอื พารามิเตอร (Parameter) หรือตัวแปรสง คือ ตัวแปรท่ีฟงกชันสรางไวรับคาที่สงเขามา ใหก บั ฟงกชนั และนาํ คาเหลา น้นั ไปประมวลผลในฟง กชัน รูปแบบการสรางฟง กชนั และการใชง านตัวแปรสง function ช่อื ฟง กช นั ($พารามิเตอร1 , $พารามเิ ตอร2 ,...,$พารามเิ ตอรn) { คําส่ังในฟง กชนั ; การคืนคาของฟง กช ัน ; //อาจมีหรือไมก็ได } มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง อารกิวเมนต (Argument) หรือตัวแปรรับ คือตวั แปรที่ตองการสงคามาใหกับฟงกชันซ่ึงจะ ใชใ นการเรียกใชง านฟง กชนั รูปแบบการใชงานตวั แปรรบั ช่อื ฟง กช นั ($อารก ิวเมนต1 ,$อารกิวเมนต2 ,...$อารก วิ เมนตn ); ตวั อยา งท่ี 4.1 การสรางฟง กช นั คํานวณคา คอมมชิ ชนั 1.3 1 ไฟล input.php สาํ หรบั รบั ขอ มูลจากผใู ช <!--input.php--> <html> <head> <title>คาํ นวณคาคอมมิชชัน</title> </head> <body> <form action=\"commission.php\" method=\"post\"> 1.1 กรณุ ากรอกยอดขาย : <input type=\"text\" name=\"sale\"> 1.2 <input type=\"submit\" value=\"คํานวณคาคอมมิชชัน\" name=\"submit\"> </form> </body> </html> 54
ไฟล commission.php สําหรบั การคํานวณคา คอมมิชชนั <!--commission.php--> <?php $s=$_POST['sale']; 2 $total=commission_c($s); 3 มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง print \"คาคอมมชิ ชนั คือ \" .$total. \" บาท\"; 4 function commission_c($sale_f) { if($sale_f<10000) return 0*$sale_f; else if($sale_f>=10000&&$sale_f<50000) 5 return 0.05*$sale_f; else return 0.10*$sale_f; } ?> คาํ อธิบายโคด 1. สรางฟอรม รบั ขอ มูลจากผใู ช 1.1 กําหนดใหฟอรมน้สี งขอ มลู ไปยงั ไฟล commission.php 1.2 สรางกลองรบั ยอดขายโดยตงั้ ช่อื วา sale 1.3 สรา งปุมสงขอ มลู ไปประมวลผล 2. สรา งตัวแปรมารบั คาท่สี ง มาจากฟอรม เพื่อนาํ ไปเรียกใช ซึ่งตวั แปรชื่อ $s 3. สรางสวนเรียกใชงานฟงกชัน ซ่ึงฟงกชันท่ีเรียกใชช่ือวา commission_c มีตัวแปรท่ีสงไปคือ $s เปน ยอดขายทีผ่ ูใชก รอก แลว เกบ็ คาคอมมชิ ชนั ท่ีไดจ ากฟง กชนั commission_c ลงในตวั แปร $total 4. แสดงผลคา คอมมชิ ชัน ท่ไี ดจ ากฟง กชนั commission_c ซง่ึ ตอนนีอ้ ยใู นตวั แปร $total 5. สรางสว นประกาศฟงกชนั โดยฟง กช ัน commission_c นมี้ ีเกณฑใ นการจายคา คอมมิชชัน ดังนี้ • ยอดขายตาํ่ กวา 10,000 บาท ไมจายคา คอมมิชชัน • ยอดขายมากกวา 10,000 แตไ มถงึ 50,000 บาท จา ย 5% • ยอดขายตัง้ แต 50,000 บาทข้นึ ไป จา ย 10% 55
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลการทํางาน ดังน้ี ภาพประกอบท่ี 4.1 ผลการทํางานของการใชง านตวั แปรรับ ท่มี า: (ภาพโดยผูเขียน, 2564) จากโคดจะเห็นวาเราไมตองเขียนการคํานวณซ้ําๆกัน ซึ่งอนาคตหากมีสินคาท่ีจะคํานวณ มากกวานี้เพียงนําขอมูลเขามาเพิ่มในสวนเรียกใชฟงกชัน แตเราไมตองเขียนสวนประกาศฟงกชันซํ้า อีก และหากตอ งการเปลีย่ นเกณฑข องคอมมิชชัน กเ็ ปลย่ี นเฉพาะสว นประกาศฟง กช นั เทา นัน้ การสงผา นคา ของตัวแปรใหแ กฟงกชัน วิธีการสง ผา นคาของตัวแปรรับ (Argument) ใหแกฟง กช ัน แบงออกเปน 2 รูปแบบ คอื 1. สงผา นดว ยคาของตัวแปร (Pass by value) การสงผานดวยคาของตัวแปร (Pass by value) เปนการสงผานคาอารกิวเมนตจะเปนการ คดั ลอกคาแลว สงตอคาที่คัดลอกนั้นไปยังตัวแปรภายในฟงกชันแลวทํางาน จึงถือวาเปนคาตัวแปรคน ละตวั กบั คาของตัวแปรภายนอกฟงกชัน แมวาภายในฟงกชันจะมีการเปล่ียนแปลงคาก็จะไมมีผลใดๆ ตอคาทีอ่ ยใู นตัวแปรภายนอกฟง กช ัน ตวั อยา งที่ 4.2 การสงผา นแบบ Pass by value <?php $a=10; print \"คา ตวั แปร \\$a กอ นเรยี กใชฟง กช นั = \". $a . \"<br>\"; // สว นเรียกใชฟงกชนั AddX($a); print \"คาตวั แปร \\$a หลงั เรียกใชฟงกช ัน = \". $a . \"<br>\"; // สวนประกาศฟงกช ัน function AddX($a) { $a+=10; print \"ในฟงกช ันมีการเพิ่มคาของตัวแปร ดงั นน้ั \\$a = \". $a . \"<br>\"; return; } ?> 56
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคําอธิบายโคด ตัวอยางน้ีมีการสรางฟงกชันช่ือ AddX เพ่ือเพ่ิมคาตัวแปร $a ข้ึนอีก 10 โดยใชการสงผาน แบบ Pass by value ซงึ่ มขี ้ันตอนการทํางาน มีดังนี้ 1. สรางตัวแปร $a มคี าเทากับ 10 2. แสดงผลตวั แปร $a กอนเรยี กใชฟ งกช นั 3. เรยี กใชง านฟง กช ัน AddX โดยสงตวั แปร $a ไปยังฟงกช นั 4. ฟง กชนั เพมิ่ คาตวั แปร $a ขน้ึ อกี 10 5. แสดงผลการเพมิ่ คา ตัวแปร $a ภายในฟฟง กช นั 6. แสดงผลตัวแปร $a หลังเรียกใชฟงกชัน (โคดบรรทัดท่ี 6) พบวาคาของตัวแปร $a ยังคง เหมอื นเดมิ ผลการทํางาน ดังนี้ ภาพประกอบท่ี 4.2 ผลการทํางานของการสง ผานแบบ Pass by value ท่มี า: (ภาพโดยผเู ขยี น, 2564) 2. สงผานดวยคา การอางอิง (Pass by reference) การสงผานดวยคาการอางอิง (Pass by reference) เปนการสงผานคาอารกิวเมนตจะ คัดลอกคาสงตอไปยังตัวแปรภายในฟงกชันแลวทํางาน โดยคาของตัวแปรอารกิวเมนตเดิมจะ เปลี่ยนแปลงไปดวย สําหรับการสงคาดวยวิธีน้ี จะตองใสเคร่ืองหมาย & ไวหนาตัวแปรท่ีสงใหแก ฟง กช ัน 57
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งท่ี 4.3 การสงผา นแบบ Pass by reference <?php $a=10; print \"คาตัวแปร \\$a กอนเรยี กใชฟ งกช นั = \". $a . \"<br>\"; // สวนเรียกใชฟ ง กช ัน AddX($a); print \"คา ตวั แปร \\$a หลังเรียกใชฟง กชัน = \". $a . \"<br>\"; // สวนประกาศฟงกชนั function AddX(&$a) { $a+=10; print \"ในฟง กช ันมีการเพ่ิมคา ของตวั แปร ดังนัน้ \\$a = \". $a . \"<br>\"; return; } ?> คาํ อธบิ ายโคด ตวั อยางน้ีจะเหมอื นกับตวั อยางทผ่ี า นมายกเวน จะสงคา แบบ Pass by reference ผลการทาํ งาน ดงั น้ี ภาพประกอบที่ 4.3 ผลการทํางานของการสงผานแบบ Pass by reference ทีม่ า: (ภาพโดยผูเขยี น, 2564) การคนื คาจากฟง กชนั เมื่อส้ินสุดการเรียกใชงานฟงกชัน ฟงกชันอาจมีการกําหนดการคืนคาจากฟงกชันไปสูผู เรยี กใชง าน ซ่งึ อาจมีทัง้ การคืนคา ตามรูปแบบทีป่ ระกาศไว หรือไมม ีการคืนคา ดงั นี้ 58
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง1. ฟง กชันท่ไี มม กี ารคืนคา ฟงกชันท่ีไมมีการคืนคาจะใชคําสั่ง return ในจุดท่ีตองการหยุดการทํางาน เพ่ือจบการ ทํางานภายในฟงกช ัน แลว ออกไปยังจุดทเี่ รยี กใชงานฟงกชันเพ่ือทํางานในข้ันตอนตอไป (ดูการใชงาน จากตวั อยา งท่ี 4.3) 2. ฟง กช ันทีม่ กี ารคนื คา ฟง กช ันที่มีการคนื คาจะใชคําส่ัง return ตามดว ยคา ท่ตี องการสงกลบั โดยคาที่สงกลับออกไป อาจเปนตวั แปร, คาคงท่ี หรือฟงกชันกไ็ ด (ดูการใชงานจากตัวอยางที่ 4.1) ขอบเขตการเรยี กใชต วั แปร การเขียนโคด PHP แมตัวแปรภายในฟงกชัน และภายนอกฟงกชันจะมีช่ือเหมือนกัน แต PHP จะมองวาเปนคนละตัวกนั เพราะมีขอบเขตในการใชงานไมเหมือนกนั ดังนี้ - ตัวแปรทเ่ี รียกใชงานไดเ ฉพาะภายในฟงกช นั (Local) คือตวั แปรท่ปี ระกาศภายใน ฟง กช นั จะมีขอบเขตการทาํ งานตง้ั แตประกาศฟงกชันไปจนส้ินสุดการทํางานของฟงกชันเทาน้ันจะไม นําคาออกไปใชงานภายนอกฟง กชนั - ตัวแปรที่เรยี กใชไ ดท ง้ั ภายในและภายนอกฟง กชัน (Global) คือตวั แปรท่ปี ระกาศ ภายนอกฟงกชันมีขอบเขตต้ังแตเริ่มประกาศตัวแปรจนส้ินสุดการใชงานของโปรแกรม แตจะไมมีผล ภายในฟงกชันถาหากตัวแปรมีชื่อตรงกนั ฟงกช นั เรียกใชตัวเอง (Recursive Function) คือฟงกชันที่เรียกใชตัวเอง เปนลักษณะเปนฟงกชันท่ีภายในการทํางานของฟงกชันมีการ เรียกใชฟ งกชนั ตัวเองข้ึนมาทํางานวนซํา้ มักใชป ระโยคเงือ่ นไขมาชว ยควบคมุ การทาํ งาน 59
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยา งท่ี 4.4 การใชงานฟงกชันเรียกใชต วั เอง <?php $a=rand(1,9); print \"คาตัวแปร \\$a กอนเรยี กใชฟ งกช ัน = \". $a . \"<br>\"; // สวนเรยี กใชฟ งกชัน Recurs($a,1); // สว นประกาศฟง กช นั function Recurs($a,$n) { $a*=2; print \"เรยี กใชง านฟง กช ัน Recurs ครงั้ ท่ี $n ตัวแปร \\$a = \". $a . \"<br>\"; $n+=1; if($a<=999) { Recurs($a,$n); } return; } ?> คาํ อธิบายโคด ตัวอยางนี้จะสุมตัวเลขขึ้นมา 1 ตัว (ระหวาง 1 ถึง 9) แลวเพ่ิมคาตัวเลขนั้นทีละ 2 เทาโดย เพิม่ ไปจนกวาจะมากกวา 999 จงึ หยดุ ซ่งึ ใชฟ งกช นั ชนิด Recursive มาชว ย ผลการทาํ งาน ดังนี้ ภาพประกอบที่ 4.4 ผลการทํางานของการใชงานฟง กช นั เรยี กใชต วั เอง ที่มา: (ภาพโดยผเู ขยี น, 2564) 60
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงฟง กชนั include คือ ฟงกชันที่นําสคริปตจากไฟลอ่ืนมาใชงาน และสามารถเรียกใชไดบอยตามตองการ มี รูปแบบ ดังน้ี include (‘ชอ่ื ไฟล.นามสกุลไฟล’ ); ตวั อยา งท่ี 4.5 การใชง านฟง กชัน include <!--master-include.php--> <?php $a=10; print \"คาตัวแปร \\$a = $a <br>\"; print \"เรียกตวั แปร \\$b มาจากไฟลอน่ื โดยใชฟ งกช ัน include <br>\"; include(\"include-test.php\"); $a+=$b; print\"คาตัวแปร \\$a = $a <br>\"; ?> <!—include-test.php--> <?php $b=30; print \"คาตวั แปร \\$b = $b <br>\"; ?> คาํ อธิบายโคด ตัวอยางน้ีมีการแทรกสคริปตจากไฟล include-test.php เขามาในไฟล master- include.php โดยจะนาํ คาของตัวแปรท่อี ยูในสคริปตท ัง้ สองมาคาํ นวณและแสดงผล 61
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลการทํางาน ดงั นี้ ภาพประกอบที่ 4.5 การใชง านฟง กชนั include ทม่ี า: (ภาพโดยผูเขียน, 2564) ฟงกช ัน function_exists กรณีท่ีเราเขียนโปรแกรมเปนจํานวนมาก หากตองการตรวจสอบฟงกชันที่เขียนลงใน โปรแกรมวามีอยูหรือไมสามารถตรวจสอบการมีอยูของฟงกชันโดยใชฟงกชัน function_exists ควร ใชรวมกับประโยคเง่ือนไข (if-else) โดยจะคืนคาเปน True เมื่อมีช่ือฟงกชันท่ีคนหา และคืนคาเปน False เม่ือไมพบชื่อฟงกชนั ท่คี น หา ตวั อยางท่ี 4.6 การใชงานฟง กช ัน function_exists <!—Function-exits.php--> <?php function AddVar($a) { $a+=10; } $nameFunc=\"AddVar\"; if(function_exists(\"$nameFunc\")) { print \"ฟงกช ัน $nameFunc มีอยจู ริงในโปรแกรมนี้ <br>\"; } else { print \"โปรแกรมนไ้ี มมีฟงกชนั $nameFunc \"; } ?> 62
คําอธิบายโคด ตวั อยางนเ้ี ราจะตรวจสอบหาฟงกชัน AddVar วามีอยูในโปรแกรมนี้หรือไม ถามีฟงกชันนี้ให แสดงขอความวา ฟงกชัน AddVar มีอยูจริงในโปรแกรมน้ี แตถาไมมีฟงกชันน้ีอยูใหแสดงขอความวา โปรแกรมนีไ้ มมฟี งกช ัน AddVar ผลการทํางาน ดงั น้ี มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 4.6 ผลการทํางานของการใชงานฟง กชัน function_exists ทม่ี า: (ภาพโดยผูเ ขยี น, 2564) (อนรรฆนงค คุณมณ,ี 2555) ฟง กชนั มาตรฐานของภาษา PHP ฟงกชันที่มีอยใู นโปรแกรมภาษา PHP มีมากมาย แตจะขอกลาวถึงฟงกชนั ท่ีพบเห็นและมี การเรียกใชง านประจาํ ซึง่ บางฟง กช นั จะมรี ูปแบบการใชง านไดหลายรูปแบบ ฟง กช นั เกย่ี วกบั คณิตศาสตร แมว า PHP จะมฟี งกชันเกี่ยวกับคณติ ศาสตรอยเู ปนจาํ นวนมาก แตม ีฟงกชันทใ่ี ชงานบอยๆ เพยี งไมกี่ฟงกช นั ดงั น้ี ตารางที่ 4.1 ฟงกชันเกย่ี วกบั คณิตศาสตร ฟง กชัน ตัวอยาง หนาท่ี ceil(float value) ceil (4.01); //ไดผ ลลัพธ 5.0 ปดเศษเลขทศนยิ มใหเปนเลข ceil (3.98); //ไดผลลัพธ 4.0 จํานวนเตม็ โดยการปด เศษข้ึน ceil (-3.98); //ไดผลลัพธ -3.0 หากมเี ลขหลงั จุดทศนยิ ม ceil (-4.01); //ไดผ ลลพั ธ -4.0 floor(float value) floor (4.99); //ไดผลลัพธ 4.0 ปดเศษเลขทศนยิ มใหเปนเลข floor (5.1); //ไดผ ลลัพธ 5.0 จาํ นวนเต็มโดยการปดเศษลง floor (-5.1); //ไดผลลพั ธ -6.0 หากมีเลขหลังจดุ ทศนยิ ม floor (-4.99); //ไดผลลพั ธ -5.0 round(float value round (3.4); //ไดผ ลลัพธ 3 ปดเศษเลขทศนิยมโดยปด ขน้ึ [, int precision] ) round (3.5); //ไดผ ลลัพธ 4 หรอื ลงดจู ากเศษทศนิยมหาก 63
ฟงกช นั ตัวอยาง หนาท่ี intval(var) round (1.95583, 2); //ไดผลลพั ธ 1.96 นอยกวา 0.5 ใหป ด ลง หาก floatval(var) round (5.044, 2); //ไดผ ลลัพธ 5.04 มากกวา 0.5 ใหป ด ข้ึน และ min(n1,n2, … n) หรอื สามารถระบุ precision min(อารเ รย) (จํานวนหลักหลังจุดทศนยิ ม) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง intval (16.345); //ไดผลลัพธ 16 เลอื กเอาเฉพาะจํานวนเตม็ ของ intval (\"16s\"); //ไดผลลพั ธ 16 จาํ นวน (var) ทรี่ ะบุ intval (\"t16\"); //ไดผ ลลพั ธ 16 intval (\"a\"); //ไดผ ลลพั ธ 0 intval (225.345 MB); //ไดผ ลลัพธ เลือกเอาเฉพาะจํานวนทศนยิ ม 225 ของจาํ นวน (var) ที่ระบุ กรณี จํานวนน้นั วางอยูหนา string min (6,7,3,8,9); // ไดผ ลลพั ธ 3 คานอ ยสุดระหวางจํานวนที่ min (array(10,10.5,3.4,4.5,20)); // กําหนด ไดผลลพั ธ 3.4 max(n1,n2, … n) max (6,7,3,8,9); // ไดผ ลลพั ธ 9 คา มากสุดระหวา งจาํ นวนที่ หรือ max (array(10,10.5,3.4,4.5,20)); // กาํ หนด max(อารเ รย) ไดผ ลลัพธ 20 number_format number_format (1523000); // ได ใชในการจัดรปู แบบตวั เลข (จํานวน) is_numberic ผลลพั ธ 1,523,000 (ขอมูล) is_numberic (123) // ไดผลลพั ธ true ตรวจสอบวาขอ มูลท่รี ะบุนนั้ is_int(ขอมูล) is_float(ขอมลู ) is_numberic (“12s”) // ไดผลลัพธ เปน ตัวเลขหรอื ไม โดยจะคืนคา false true ถาเปนตวั เลขที่ไมมี is_numberic (5e2) // ไดผลลัพธ true อักขระอืน่ ๆ ผสมอยู แตถา มี เนือ่ งจาก e ใชกําหนดเลขช้ีกําลังฐานสิบ อักขระอน่ื ๆ ผสมอยูจะคืนคา false is_int (123) // ไดผ ลลพั ธ true ตรวจสอบวา เปนจาํ นวนเตม็ is_int (123.25) // ไดผ ลลพั ธ false หรอื ไม หากใชจะคนื คา true is_float (123) // ไดผลลัพธ false ตรวจสอบวา เปนจาํ นวนท่มี ี 64
ฟง กช นั ตัวอยาง หนาที่ is_ float (123.25) // ไดผ ลลพั ธ true ทศนยิ มหรือไม หากใชจะคนื คา true abs(จาํ นวน) abs (-10) // ไดผลลัพธ 10 ใชสําหรับหาคา บวก (absolute) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง rand() rand (); // ไดผ ลลัพธ เลขสมุ คา ระหวาง ใชใ นการสรางเลขสมุ โดยคา ท่ี หรอื 0 – 32,768 ไดจ ะไมแนน อนในแตล ะคร้ัง rand(คา นอยสุด, คา rand (1,9); // ไดผลลพั ธ เลขสุมคา มากสดุ ) ระหวา ง 1 – 9 pow(เลขฐาน, เลขชี้ pow (10, 2); // ไดผ ลลัพธ 100 ใชใ นการหาคา เลขยกกําลงั กําลัง) sqrt(ตวั เลข) sqrt (100); // ไดผ ลลัพธ 10 หาคา รากที่สองของจํานวนท่ี ระบุ แตตองไมใ ชจ ํานวนทีต่ ดิ ลบ pi() $circle_area = pi() * pow($radius, ใชสําหรบั อานคา pi 2) ; ฟง กชันเก่ียวกับเวลาและวนั ที่ ขอมูลเกี่ยวกบั เวลาและวันที่ถือวา เปน ขอมลู ทสี่ าํ คัญในการเขยี นโปรแกรมแบบสครปิ ต ซ่ึง การใชง านสว นใหญจะกระทาํ ผานฟง กช นั โดยฟง กช นั ทีน่ าสนใจเกยี่ วกบั เวลาและวันทมี่ ีดังนี้ ตารางท่ี 4.2 ฟงกช ันเกย่ี วกบั เวลาและวันที่ ฟงกช นั ตัวอยา ง หนา ท่ี date(รปู แบบ [, date (\"วันท่ี j เดือนท่ี n ป ค.ศ. Y\"); จัดรปู แบบวันเวลาใหตรงกบั timestamp]) // ไดผลลพั ธ วนั ท่ี 22 เดือนท่ี 11 ป รูปแบบของแตละทอ งถน่ิ ค.ศ. 2022 - รูปแบบ คอื รหสั ท่ีกําหนด รูปแบบ date ท่ีตอ งการ - timestamp คือ ขอมลู วันเวลา ท่ไี ดจ ากคาํ สงั่ mktime หรือ gmmktime ถาไมกําหนด timestamp จะเปนการเอาวัน เวลาจากปฏทิ นิ และนาฬิกาใน 65
ฟง กชัน ตวั อยา ง หนา ท่ี checkdate(เดอื น, เครอ่ื งเซิรฟเวอร วันท,ี่ ป ค.ศ.) checkdate (2, 29, 2020); //ได ตรวจสอบวามีวันเวลาท่รี ะบุอยู strtotime() ผลลัพธ True เนอื่ งจากป 2020 มีวันท่ี จริงหรอื ไม 29 กุมภาพนั ธ มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง $a= strtotime (\"12/30/2022\"); แปลงจากสตรงิ ใหเ ปนขอมลู วนั echo date (\"วนั ท่ี j เดือนที่ n ป ค.ศ. เวลาในรปู แบบ timestamp แต Y\",$a); // ไดผลลัพธ วนั ท่ี 30 เดอื นท่ี สตรงิ น้ันตองเขียนในรปู แบบท่ี 12 ป ค.ศ. 2022 สามารถแปลงได เชน month/day/year หรือ year/month/day เปน ตน ทงั้ น้ี หากแปลงไมไ ดจะคนื คา false หรอื -1 สวนใหญจะนําผลลพั ธท่ี ไดจ ากฟงกชนั strtotime มา ปรับใชก ับฟงกช นั date อักขระตา งๆ ท่ีใชก ําหนดรปู แบบวนั เวลาสาํ หรับฟง กช นั date() สามารถแยกออกเปน กลมุ ไดดงั นี้ ตารางที่ 4.3 อักขระที่ใชแทน “วัน” และ “สัปดาห” อักขระ ความหมาย d ใชแทนวนั ทข่ี องเดือนโดยเปน เลข 2 หลัก เชน 01, 02, 31 j ใชแ ทนวันที่ของเดือนแบบไมม ี 0 นําหนาเลขหลกั เดยี ว เชน 1, 2, 31 D ใชแทนวนั ในรอบสปั ดาหแบบยอ เชน Sun, Mon l (ตัวแอลพิมพเล็ก) ใชแทนวันในรอบสัปดาหแบบชื่อเต็ม เชน Sunday, Monday S (ตัวเอสพิมพใหญ) เปนตัวอักษรยอท่ีใชบงบอกลําดับท่ีของวันในรอบเดือน เชน st, nd, rd, th โดยปกติจะใชตอทายตัว j หรือ d (ซ่ึงใชแทนวันท่ี) เชน jS ลกั ษณะผลลพั ธ คอื 1st w ใชแ ทนลาํ ดบั ของวนั ในรอบสปั ดาหจาก 0-6 z แทนลําดบั ของวนั ในรอบปจาก 0-365 W ลําดับท่ขี องสปั ดาหใ นรอบป ตารางท่ี 4.4 อกั ขระที่ใชแทน “เดอื น” 66
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง อักขระ ความหมาย F ชื่อเดอื นแบบเต็ม เชน January, March m ลาํ ดับทีข่ องเดอื นในรอบปโดยมี 0 นาํ หนา เลขหลกั เดียว เชน 01, 02, 12 M ช่ือของเดอื นแบบยอเฉพาะ 3 ตัวแรก เชน Jan, Feb n ลาํ ดบั ทข่ี องเดอื นแบบไมมี 0 นาํ หนา เลขหลกั เดียว เชน 1, 2, 12 t จาํ นวนวนั ของเดือนนั้นๆ โดยมคี า ระหวา ง 28-31 ตารางที่ 4.5 อักขระทใ่ี ชแทน “ป” อกั ขระ ความหมาย L ตรวจสอบวาเปน ป Leap Year หรือไม (เดือนกุมภาพันธมี 29 วัน) ถาใชจะคืน คา 1 ถาไมใชจ ะคืนคา 0 Y ใชแทนป ค.ศ. แบบเลข 4 หลกั เชน 1975 y ใชแ ทนป ค.ศ. แบบเลข 2 หลัก เชน 75 ตารางท่ี 4.6 อักขระทีใ่ ชแ ทน “เวลา” อักขระ ความหมาย a ใชแทนคา Ante Meridiem และ Post Meridiem แบบพิมพเล็กไดแก am หรือ pm A ใชแทนคา Ante Meridiem และ Post Meridiem แบบพิมพเล็กไดแก AM หรอื PM g ใชแทนคาช่ัวโมงของวันแบบ 12 ชั่วโมงโดยไมมี 0 นําหนาเลขหลักเดียว ระหวา ง 0-12 G ใชแทนคาช่ัวโมงของวันแบบ 24 ชั่วโมงโดยไมมี 0 นําหนาเลขหลักเดียว ระหวา ง 0-23 h ใชแทนคาช่ัวโมงของวันแบบ 12 ช่ัวโมงโดยไมมี 0 นําหนาเลขหลักเดียว ระหวาง 01-12 H ใชแทนคาช่ัวโมงของวันแบบ 24 ชั่วโมงโดยไมมี 0 นําหนาเลขหลักเดียว ระหวา ง 00-23 i คา นาทีแบบมี 0 นาํ หนาเลขหลักเดยี วจาก 00-59 s คา วนิ าทีแบบมี 0 นําหนาเลขหลักเดียวจาก 00-59 การเพม่ิ และลบชว งเวลา 67
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ปกติแลวใน PHP ไมมีฟงกชันท่ีใชในการลบวันเวลาโดยตรง ยกเวนจะแปลงใหอยูในรูปแบบ timestamp เสียกอน แตดวยความสามารถของฟงกชัน strtotime() ท่ีสามารถแปลงจากสตริง ธรรมดาใหเปน วันเวลาแบบ timestamp ได ทาํ ใหก ารหาความแตกตา งของชว งวนั เวลานั้นงายข้นึ strtotime(\"now\"); // ไดผ ลลัพธ วนั เวลาปจจบุ นั strtotime(\"+30 days\"); // ไดผ ลลพั ธ อกี 30 วนั นบั จากปจ จบุ นั strtotime(\"-45 days\"); // ไดผลลัพธ อกี 45 วนั ท่แี ลว strtotime(\"+9 months\"); // ไดผ ลลพั ธ อีก 9 เดือน strtotime(\"-2 years\"); // ไดผลลัพธ เมอื่ 2 ปที่แลว นอกจากน้ียังมีหนวยงานอื่นๆ ที่เราสามารถกําหนดไดอีก เชน hours, minutes, seconds, weeks เปนตน แตเนื่องจากคาที่ไดจากฟงกชัน strtotime() จะอยูในแบบ timestamp ดังนั้นเรา ควรแปลงใหอยูในรูปแบบท่เี ราสามารถเขา ใจได โดยใชฟ ง กช นั date() หรอื getdate() เชน $ts=strtotime(\"+100 days\"); echo date (\"อีก 100 วนั จะตรงกบั d/m/y\", $ts); การเปรียบเทียบและหาความแตกตางของวนั เวลา เน่ืองจากขอมูลวันเวลาใน PHP นั้นเราเขียนในแบบสตริง จึงไมสามารถนํามาเปรียบเทียบ หรือหาความแตกตางกันไดโดยตรงได แตถาจะทําตองเปล่ียนวันเวลาใหอยูในรูปแบบ timestamp เสยี กอ น โดยมีหลกั การดังตอ ไปนี้คือ - วนั เวลาทั้งหมดท่ีจะเปรียบเทียบหรอื หาความแตกตา ง ใหเ ปลี่ยนเปน timestamp โดยใชฟง กช นั strtotime() ดังที่กลา วมาแลว - หลกั การเปรียบเทียบคือ วันเวลาทม่ี ากอน ยอมมคี า timestamp นอ ยกวา วัน เวลาที่มาทหี ลัง เชน 31/12/2014 จะมีคา timestamp นอยกวา 1/1/2015 เปน ตน เชน $now=strtotime(\"now\"); $expire=strtotime(\"2010/10/20\"); if($now >= $expire) { echo \"สนิ คา นหี้ มดอายแุ ลว\"; } - การหาความแตกตา งของวนั เวลา หลงั เปลยี่ นเปน timestamp แลว สามารถนํามา 68
ลบกนั ไดเ ลย แตค าทไ่ี ดจ ะเปน หนว ยวนิ าที หากเราจะแปลงใหเปนหนวยที่ใหญขึ้นตองแปลงหนวยน้ัน เปนหนวยวินาที แลว นาํ มาหาร เชน $now=strtotime(\"now\"); $birth=strtotime(\"2010/10/20\"); $diff= $now-$birth; $y_sec= 60*60*24*365; //แปลงจํานวนวินาทใี น 1 ป $age= intval($diff/$y_sec); มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ฟงกชนั เกยี่ วกบั สตรงิ สตริง คือขอมูลท่ีเปนสายอักขระ หรือเปนการนําอักขระแตละตัวมาวางเรียงตอกันนั่นเอง เชน คาํ วา “String” เกิดจากอักขระ S+t+r+i+n+g เปนตน ท้ังน้ีอักขระท่ีวางเรียงตอกันเปนสตริง ก็ จะมีลําดับเปนของมันเองเหมือนกับอารเรย จึงกลาวไดวาสตริงก็คืออารเรยของอักขระนั่นเอง ดังนั้น การอางถงึ อักขระยอยๆ แตละตัวภายในสตริง เราจึงใชเลขลําดับเปนตัวกําหนดเหมือนกับการอางอิง ถึงสมาชิกของอารเรย เชน $str = \"Thailand\"; echo $str[0] . $str[1] . $str[2] . $str[3] ; // Thai ฟงกชันสตริงมีเปนจํานวนมาก แตในบทนี้จะกลาวถึงเฉพาะฟงกชันท่ีใชงานบอยๆและ นาสนใจ ซ่ึงแบงออกเปน กลมุ ดังตอไปน้ี ตารางที่ 4.7 ฟงกชนั เก่ียวกับการหาขนาดของสตรงิ ฟงกชนั ตวั อยา ง หนาที่ หาความยาวของสตริง หรอื นับ strlen(สตริง) $str1 = \"Thailand\"; จํานวนสตริงน่ันเอง โดยชอ งวา ง 1 ชอ งกจ็ ะนบั เปน 1 อักขระ echo strlen($str1); // ไดผลลพั ธ 8 ดว ย กรณสี ระและวรรณยุกต ไทยกจ็ ะนับเปน 1 อกั ขระดวย $str2 = \"สวสั ดี คะ\"; เชนกัน echo strlen($str2); // ไดผลลพั ธ 10 69
ฟงกช ัน ตวั อยาง หนาท่ี str_word_count (สตริง) $str = \"One นบั จาํ นวนคํา โดยใชอกั ขระท่ี Two,Three&Four_Five:Six7Seven- ไมใชตวั อักษร a-z เปนตัวคดั Eight+Nine'Ten\"; แยก ยกเวน ' และ - echo str_word_count($str); // ได มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ผลลพั ธ 8 เพราะไมน บั คําท่แี บง ดวย ' และ - ตารางท่ี 4.8 ฟง กชนั ในการเปลี่ยนรปู แบบของตวั พมิ พ ฟงกช นั ตวั อยา ง หนาที่ strtolower(สตริง) $str = \"ABC\"; เปลย่ี นสตริงท่ีระบใุ หเปน ตวั พิมพ echo strtolower($str); // ไดผ ลลัพธ เล็กทุกตวั abc strtoupper(สตรงิ ) $str = \"thai\"; เปลีย่ นสตรงิ ทร่ี ะบุใหเปนตัวพิมพ echo strtoupper($str); // ไดผลลพั ธ ใหญท ุกตวั THAI ucfirst(สตริง) $str = \"thai\"; เปล่ยี นสตรงิ ท่ีระบใุ หเ ปนตัวพิมพ echo ucfirst($str); // ไดผลลัพธ Thai ใหญเ ฉพาะตวั อักษรแรก ucwords(สตริง) $str = \"information technology\"; เปลย่ี นสตริงท่รี ะบุใหตวั อักษรแรก echo ucwords($str); // ไดผ ลลัพธ ของทุกคําใหเปน ตัวพิมพใหญ Information Technology ตารางที่ 4.9 ฟง กช นั เกีย่ วกับการแยกและรวมสตรงิ ฟง กช นั ตัวอยาง หนาที่ คัดแยกสตรงิ ออกเปนสตริงยอยๆ explode $today = \"1/6/2014\"; ดว ยสญั ลกั ษณท ี่กําหนด โดย ผลลพั ธทไี่ ดจะอยใู นรปู แบบของ (สญั ลกั ษณทใี่ ชแ ยก, $a=explode(\"/\",$today); อารเรยข องสตริงยอยท่ีถูกแยก ออกมา สตรงิ ) echo $a[0] .\"<br>\"; // ไดผลลัพธ 1 ทํางานตรงกนั ขา มกับ explode() echo $a[1] .\"<br>\"; // ไดผ ลลพั ธ 6 echo $a[2] .\"<br>\"; // ไดผ ลลัพธ 2014 implode $arr = array('one', 'two', 'three'); 70
ฟง กช นั ตวั อยาง หนา ท่ี (สญั ลักษณทใี่ ชค่ัน, $a= implode(\", \",$arr); คือการนําสตรงิ ยอยมารวมเขา อารเ รยเ ปาหมาย) echo $a ; ดว ยกนั โดยค่นั แตล ะสตริงดว ย ไดผ ลลพั ธ คือ สัญลกั ษณท ่รี ะบุ one, two, three มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ตารางที่ 4.10 ฟง กช ันเกย่ี วกบั สตรงิ ยอย ฟง กช ัน ตัวอยาง หนาที่ ใชส าํ หรับคน หาตัวอกั ษร คาํ หรอื strstr(สตรงิ ท่จี ะ $str = \"I Love you\"; ขอความ ตัวแรกจากขอความ ทั้งหมด หากพบคาดงั กลา ว ก็จะ คนหา, สตริงท่ี $strSearch= (\"Love\"); ทาํ การคืนคา ขอความนบั จากคา ทค่ี น หาเจอ ไป ตองการคนหา) $s = strstr($str, $strSearch); จนสนิ้ สดุ ขอความท้ังหมด echo $s; // ไดผลลพั ธ Love you คัดเอาสตรงิ ยอยโดยกําหนด ตาํ แหนง เริ่มตน และความยาวที่ substr(สตริงหลัก, $str = \"I Love you\"; ตองการ โดยเร่มิ นับจากตาํ แหนง ตําแหนงเร่ิมตน [, $s1 = substr($str, 7); // ไดผ ลลัพธ ท่ี 0 หลักการกําหนดคา มดี ังนี้ ความยาว]) you - หากเราไมกาํ หนดความยาว $s2 = substr($str, 7, 2); // ไดผ ลลพั ธ โปรแกรมจะคัดเอาสตรงิ ทง้ั หมด yo นบั ตัง้ แตตาํ แหนงเริ่มตน $s3 = substr($str, -4); // ไดผ ลลพั ธ - หากกําหนดตาํ แหนงเร่ิมตน เปน you บวก การคัดลอกสตรงิ จะเริ่มท่ี ตําแหนง นนั้ - หากกําหนดตําแหนงเริ่มตน เปน ลบ การคดั ลอกสตริงจะเริ่มตนที่ ตาํ แหนง ที่ระบุจากจดุ ส้นิ สุดของ สตริง (ทายสตริง) - หากกําหนดความยาวเกนิ กวา ความยาวของสตริง โปรแกรมจะ คัดลอกแคส ้นิ สุดสตริง 71
ฟงกชัน ตัวอยา ง หนา ท่ี นับจาํ นวนคําท่ีมีอยใู นสตรงิ ซึ่ง substr_count $s=\"aa bb cc aa dd a cccaabbb\"; รูปแบบการพมิ พตอ งตรงกันดวย (สตริงหลัก, สตรงิ $a= substr_count($s, \"aa\"); // ได เหมาะสาํ หรับการนําไปใชในการ ตัดคาํ ในภาษาไทย โดยการ ยอ ย) ผลลัพธ 3 กําหนดคาเหมอื นกบั substr ตวั ที่ เพิม่ มาคือ mb_substr(สตรงิ $str = \"ฉนั รกั เธอ\"; Encode สําหรับภาษาไทย แนะนาํ ใหกาํ หนดเปน \"utf-8\" มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงหลกั ,ตําแหนงเริม่ ตน $s1 = mb_substr($str, 7,2,\"utf-8\"); [, ความยาว] // ไดผ ลลัพธ ธอ [,encode]) $s2 = mb_substr($str, 3, 2,\"utf-8\"); // ไดผ ลลพั ธ รั $s3 = mb_substr($str, -4,2,\"utf-8\"); // ไดผ ลลัพธ กเ ตารางที่ 4.11 ฟง กช นั ในการคน หาสตริง ฟง กชนั ตวั อยา ง หนาท่ี strpos(สตริงหลกั , $s=\"aa bb cc aa dd a cccaabbb\"; คน หาตําแหนง ของสตรงิ ยอย ซ่ึง สตรงิ ยอ ย) $a1= strpos($s, \"aa\"); // ไดผลลัพธ คา ทคี่ ืนมาจะเปน ตําแหนงแรก 0 ของสตริงยอยท่ีคนพบ หากไม $a2= strpos($s, \"bb\"); // ไดผลลัพธ เจอจะสง คา null โดยการพิมพ 3 จะตอ งเหมอื นกัน $a3= strpos($s, \"dd\"); // ไดผ ลลัพธ 12 stripos(…) $s=\"Aa Bb Cc aa dd a cccaabbb\"; เชน เดยี วกับ strops() เพยี งแตจะ $a1= stripos($s, \"aa\"); // ไดผ ลลัพธ ไมส นใจความแตกตางของ 0 ตวั พมิ พเ ล็กตวั พิมพใ หญ $a2= stripos($s, \"bb\"); // ไดผลลพั ธ 3 $a3= stripos($s, \"dd\"); // ไดผ ลลัพธ 12 ตารางที่ 4.12 ฟงกชันในการแทนท่ีสตริง ฟง กช นั ตัวอยา ง หนาท่ี str_replace(สตริงท่ี $s=\"aa bb cc aa dd a cccaabbb\"; แทนท่สี ตรงิ ยอยเดิมดวยสตรงิ ยอย 72
ฟง กชนัมหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา ง หนาท่ี จะคนหา, สตริงทจ่ี ะ $a1= str_replace (\"aa\",\"AA\",$s); // ใหมท่ีตองการ หากสตรงิ ยอ ยท่ี ใชแ ทนท,ี่ สตรงิ ไดผลลพั ธ AA bb cc AA dd a ตอ งการคนหามีมากกวา 1 ก็จะ หลกั ) cccAAbbb ถกู แทนทท่ี ั้งหมด $a2= str_replace (\"bb\",\"BB\",$s); // str_ireplace(…) ไดผ ลลัพธ aa BB cc aa dd a เหมือนกบั ฟงกชนั str_replace() cccaaBBb เพยี งจะไมส นใจความแตกตางของ strtr(สตรงิ หลกั , ตวั พิมพ อารเ รยของสตรงิ ท่ี $s=\"Aa Bb Cc aa dd a cccaabbb\"; จะใชแทนท่ี) $a1= str_ireplace (\"aa\",\"AA\",$s); // เปนการแทนทสี่ ตรงิ อีกแบบหนงึ่ ไดผลลัพธ AA bb cc AA dd a แตสามารถกาํ หนด substring ใน cccAAbbb $a2= str_ireplace (\" การแทนท่ีไดม ากกวา 1 คํา โดย bb\",\"BB\",$s); // ไดผลลพั ธ aa BB cc อารเรยส ตริงที่จะใชแทนทจี่ ะตอง aa dd a cccaaBBb กําหนดในรปู แบบของ key/value โดย $s=\"คนเสพสบาย คนขายรวย\"; - key คอื สง่ิ ทเี่ ราตองการคน หา $a= array('สบาย'=>\"ตาย\", 'รวย'=> - value คือส่งิ ท่ีจะนาํ ไปแทนท่ี \"ตดิ คุก\"); ซึง่ การพมิ พตอ งตรงกัน $str= strtr($s, $a); echo $str; // ไดผลลัพธ คนเสพตาย คนขายตดิ คกุ ตารางที่ 4.13 ฟงกช ันในการตัดชองวางและเตมิ สตรงิ ฟง กชนั ตัวอยาง หนาที่ ตดั ชองวา งท่ีอยูด านซายของสตรงิ ltrim(สตรงิ ) $str=\" PHP \"; ออกท้ังหมด $s= ltrim ($str); // ไดผลลัพธ \"PHP ตดั ชองวา งท่ีอยดู า นขวาของสตริง ออกทั้งหมด \" rtrim(สตริง) $str=\" PHP \"; $s= ltrim ($str); // ไดผลลพั ธ \" PHP\" 73
ฟงกชนั ตัวอยา ง หนา ที่ trim(สตรงิ ) $str=\" PHP \"; ตดั ชองวางที่อยดู านซายและ $s= ltrim ($str); // ไดผลลัพธ \"PHP\" ดานขวาของสตริงออกท้ังหมด str_pad(สตริงหลกั $str=\"PHP\"; เติมสตรงิ ยอยลงไปเพอื่ ใหส ตริง , ความยาว, สตรงิ $s= str_pad ($str, 5, \"*\", หลกั มคี วามยาวตามตอ งการ โดยท่ี ยอ ย, รปู แบบ) STR_PAD_RIGHT); // ไดผลลพั ธ รูปแบบ มีดังนี้ STR_PAD_LEFT, STR_PAD_RIGHT, PHP** STR_PAD_BOTH ซงึ่ หมายถึงเติม สตริงยอยไปทางดานซาย, ขวา (บัญชา ปะสลี ะเตสัง, 2557) หรอื ทัง้ สองดาน ตามลําดบั มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทสรปุ ในการเขียนโปรแกรมบางโปรแกรมมีความจําเปนตองทํางานในลักษณะเดิมซ้ําๆ ทําใหตอง เสียเวลาในการพิมพซึ่งมีโอกาสที่จะทําใหเกิดขอผิดพลาดข้ึนไดระหวางการเขียนโปรแกรม โดยการ เขียนโปรแกรมนั้นสามารถแยกชุดคําสั่งท่ีใชบอยๆ หรือซ้ําๆ กันนี้ออกมา เพ่ือเอาไวเรียกใชงาน ซึ่ง ลกั ษณะนเี้ รยี กวา ฟงกชนั ซง่ึ ฟงกช นั ในภาษา PHP นั้นมี 2 ประเภท คอื 1. ฟงกชันท่ีผูใชงานสรางข้ึน เอง และ 2. ฟงกชันมาตรฐานของภาษา PHP ถาหากตองการสรางฟงกชันขึ้นเอง จะตองรูจักกับ สวนประกอบของฟงกชัน ซ่ึงแบงออกเปน 2 สวน คือ สวนการประกาศฟงกชัน และสวนการเรียกใช ฟงกชัน ซึ่งแตละสวนจะมีตัวแปรรับ และตัวแปรสง เพื่อสงผานคาตัวแปรใหแกฟงกชัน สามารถ สงผานคาตัวแปรได 2 วิธี คือ สงผานดวยคาของตัวแปร (Pass by value) และ สงผานดวยคาการ อางอิง (Pass by reference) ซ่ึงจะมีลักษณะท่ีแตกตางกันไป โดยภายในฟงกชันนอกจากจะมีคําสั่ง ตางๆที่กําหนดขึ้นเพ่ือเปนการทํางานของฟงกชัน ยังสามารถกําหนดรูปแบบการคืนคาจากฟงกชัน ดวยคําส่ัง return ไดอีกดวย โดยยังมีฟงกชันอ่ืนๆ ที่สามารถนําไปประยุกตใชกับการทํางานของ ฟง กช ัน ไดแก Recursive Function, include, function_exists ในสวนฟง กชนั มาตรฐานของภาษา PHP นั้นมีมากมาย ไดแก ฟงกชันเก่ียวกับคณิตศาสตร, ฟงกชันเก่ียวกับเวลาและวันท่ี และฟงกชัน เก่ยี วกับสตริง ทีน่ กั พฒั นาสามารถนาํ ไปใชใ นการเขียนโปรแกรมได คําถามทบทวน 74
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง1. ฟงกชนั คืออะไร 2. ฟง กช นั มีกี่ประเภท อะไรบาง 3. จงอธบิ ายวธิ ีการสงผานดว ยคาของตวั แปร (Pass by value) และการสงผา นดวยคา การอางองิ (Pass by reference) วา เหมอื นหรือแตกตา งกันอยางไร 4. ฟง กช นั เกยี่ วกับคณิตศาสตร มีอะไรบา ง จงยกตัวอยางมา 3 ฟงกช นั พรอมอธิบายการทํางาน 5. ฟงกชันเก่ยี วกับเวลาและวนั ที่ มีอะไรบา ง จงยกตัวอยางมา 3 ฟง กชนั พรอ มอธิบายการทาํ งาน 6. ฟงกช ันเกีย่ วกับสตรงิ มีอะไรบา ง จงยกตัวอยางมา 3 ฟง กชนั พรอ มอธบิ ายการทาํ งาน 7. จงอธบิ ายการทาํ งานของฟงกชัน include 8. จงอธิบายการทาํ งานของ Recursive Function 9. จงอธิบายวธิ กี ารสรา งฟงกชนั ดวยตวั เอง 10. จงอธบิ ายวิธีการเรียกใชง านฟงกชนั ทีส่ รา งข้นึ เอกสารอา งองิ อนรรฆนงค คุณมณ.ี (2555). พฒั นาเว็บ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบรุ ี : ไอซดี .ี บัญชา ปะสีละเตสงั . (2557). พัฒนาเว็บแอปพลเิ คช่นั ดว ย PHP รว มกับ MySQL และ jQuery. กรุงเทพฯ : ซเี อด็ ยูเคช่ัน. 75
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจําบทท่ี 5 หัวขอ เนื้อหา 1. อารเรยคอื อะไร 2. อารเ รยห นง่ึ มติ ิ 3. อารเรยหลายมิติ 4. Assoicative Array 5. ฟง กช นั ที่ใชใ นการจดั การอารเรย 6. ฟงกชันเกี่ยวกบั การสรา งอารเรย 7. ฟงกชันในการเพม่ิ สมาชกิ ลงในอารเ รย 8. ฟง กช ันในการตรวจสอบขอ มลู ในอารเรย 9. ฟงกชนั ในการอานขอมูลจากอารเ รย 10. ฟงกช ันในการนับจาํ นวนสมาชิกในอารเรย 11. ฟงกชนั ในการเรยี งลําดบั ขอ มลู ในอารเรย 12. ตวั แปร $_SERVER 13. การจัดการไฟล 14. การเปดและปด ไฟล 15. การอา นขอมลู จากไฟล 16. การเขียนขอ มูลลงไฟล 17. การยายตัวแปรไฟล 18. การตรวจสอบไฟล 19. การจัดการไดเรก็ ทอรี วัตถปุ ระสงคเชงิ พฤติกรรม เมื่อนกั ศกึ ษาเรยี นจบบทเรยี นน้ีแลว สามารถ 1. บอกความหมายและประเภทของอารเ รยได 2. อธบิ ายวธิ ีการสรา งตัวแปรอารเ รยแตละประเภทได 3. บอกฟง กชนั ท่ใี ชในการจดั การอารเรยได 4. บอกฟงกช ันท่ใี ชในการจัดการไฟลไ ด 5. อธิบายหลักการทาํ งานของฟง กชันทีใ่ ชในการจัดการอารเรยได 6. อธิบายหลักการทํางานของฟงกช ันทใี่ ชในการจดั การไฟลได 76
มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงวธิ ีสอนและกิจกรรมการเรียนการสอน 1. วธิ ีสอน 1.1 วธิ ีการสอนแบบบรรยาย โดยใหน กั ศึกษาฟงบรรยายจากเอกสารประกอบการสอน วิชา การพฒั นาฐานขอมลู บนเว็บ 1.2 อภิปรายรวมกนั ในช้นั เรียน 2. กิจกรรมการเรยี นการสอน 2.1 คําถามทบทวน 2.2 แบบฝกปฏิบตั ิ เร่อื ง การใชง านตัวแปรอารเ รย 2.3 Active Learning แบบ PLC สอ่ื การเรียนการสอน 1. เอกสารประกอบการสอน วิชา การพัฒนาฐานขอมูลบนเวบ็ 2. เวบ็ ไซตท มี่ เี น้ือหาเกีย่ วของกบั รายวชิ า 3. สอื่ สงั คมออนไลน การวัดผลและการประเมนิ ผล 1. สงั เกตการณม สี ว นรวมและการถาม-ตอบ 2. การทาํ งานตามท่ีไดรบั มอบหมาย 3. การทาํ คําถามทบทวน 4. การทําแบบฝกปฏิบตั ิ เรอ่ื ง การใชงานตวั แปรอารเรย 77
บทที่ 5 ตวั แปรอารเ รย และการจดั การไฟล เราเคยไดทําความรูจักกับขอมูลและตัวแปรกันมาบางแลวในบทท่ี 2 แตตัวแปรที่มี ความสําคัญอีกตัวหนึ่งคืออารเรย ซึ่งมีใหใชงานหลากหลายรูปแบบ อีกทั้งยังสามารถนําไปใช ประโยชนไดมากมาย และมีฟงกชันที่เขามาชวยในการจัดการตัวแปรอารเรยและจัดการไฟลอีกหลาย ตัว ซึ่งในบทนี้เราจะมาเรียนรูวิธีการจัดการกับตัวแปรและจัดการไฟลใหเขาใจและสามารถนําไปใช งานจริงได มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง อารเรยค ืออะไร อารเรย เปน ตวั แปรท่ีเก็บขอมูลชนดิ เดยี วกนั ไวใ นตัวเองไดมากกวา 1 คา (อนรรฆนงค คุณ มณ,ี 2555) เชน $intArr[0] $intArr[1] $intArr[2] $intArr[3] $intArr 15 25.45 142.25 2 ตัวแปรอารเรยชื่อ intArr ใชเ กบ็ ขอมูลชนดิ ตัวเลข 4 จาํ นวน $strArr[0] $strArr[1] $strArr[2] $strArr[3] $strArr PHP CSS JAVA HTML ตวั แปรอารเรยช ่อื strArr ใชเ ก็บขอมูลชนิดขอความ 4 จํานวน การเขาถึงขอมูลแตละตัวท่ีเก็บในอารเรยเราจะใช อินเด็กซ (index) มาอางถึงตัวแปรในแต ละลาํ ดับ ซึ่งอินเด็กซ (index) จะเปนตัวเลขจํานวนเต็มที่มีคาเร่ิมที่ 0 จนถึงลําดับสุดทายของตัวแปร ตัวสุดทาย จากตัวอยางดานบน ตัวแปรอารเรย intArr ตัวเลข 15 จะอยูในตําแหนงอินเด็กซที่ 0, ตัวเลข 25.45 จะอยูในตําแหนงอินเด็กซที่ 1, ตัวเลข 142.25 จะอยูในตําแหนงอินเด็กซที่ 2 และ ตวั เลข 2 จะอยใู นตําแหนงอนิ เด็กซท ี่ 3 เปน ตน รูปแบบการเก็บขอมูลในอารเรย เรียกวา มิติ ซึ่งเราสามารถแบงมิติของอารเรยไดเปน 2 รูปแบบ คือ - อารเ รยหนง่ึ มติ ิ - อารเ รยห ลายมติ ิ 78
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209