47
ตอ มาในตัวแปร $b เราบังคับใหโปรแกรมทาํ การบวกเลขกอนโดยการใสเคร่ืองหมายวงเลบ็ () ทาํ ใหการทาํ งานเปนการบวกเลขกอ น
แลวนําผลลัพธไ ปคูณกบั 5 ซ่งึ จะไดผ ลลพั ธเปน 25
a = 17
b = 25
น่ีเปนผลลัพธของโปรแกรม
การกาํ หนดเง่ือนใขในภาษา PHP (if..else, switch..case)
ในการเขียนโปรแกรม อาจจะมเี งอื่ นไขหรือขอ กําหนดบางอยา งท่ีคณุ ตอ งการใหโปรแกรมทํางานแตกตา งกันไป การ
ตดั สินใจจึงเปน เร่ืองธรรมดาทเ่ี กิดขึ้นท้งั ในการเขียนโปรแกรมและในชีวติ ประจําวนั ยกตวั อยา งเชน ถา คณุ มเี งนิ มากกวา 100 เหรยี ญ
คุณจะซ้ือวิดโี อเกม แตถา คณุ ไมเ งินไมพ อคุณจะซอื้ หนงั สือแทน
เราจะมาเร่ิมกบั คําสั่งทพ่ี ้นื ฐานทสี่ ดุ สาํ หรบั คําสงั่ เลอื กเง่อื นไข คําสง่ั If
คําส่ัง If
คาํ ส่งั If เปนคําสง่ั ควบคมุ ทพ่ี น้ื ฐานที่สุดในการเขยี นโปรแกรม มนั ใชส าํ หรบั ควบคมุ การทาํ งานในกรณที ี่เงอ่ื นไขเปน จรงิ น่ี
เปน รูปแบบการใชงานของคําสั่ง If ในภาษา PHP
if (expression)
statements
การตรวจสอบเงือ่ นไขของคําส่ัง If น้ัน เกดิ จากการประเมนิ expression ถา หากเปน จริงโปรแกรมจะทํางานในบล็อคของคําส่งั If ถา
หากไมเปน จริงโปรแกรมจะขามการทาํ งานไป มาดตู ัวอยางการใชงาน
<?php
$number = 5;
if ($number == 5) {
echo "Number is equal 5.";
}
?>
ในตัวอยาง เรามีตวั แปร $number ในการเก็บคา ของตัวเลข เนือ่ งจาก Expression เปนจริง นน่ั คอื ในตัวแปรมีคาเทากับ 5
โปรแกรมจึงทาํ งานในบล็อคของคําสง่ั If และแสดงขอความ "Number is equal 5."
Number is equal 5.
นเี่ ปนผลลัพธของโปรแกรม
มาดูตวั อยางเพม่ิ เตมิ สาํ หรบั การใชค าํ สัง่ If กับเงือ่ นไขทซี่ บั ซอ นขึน้
<?php
$username = "sam43";
$password = "1234";
if ($username == "sam43" && $password == "1234") {
echo "Login succeeded.";
}
?>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
48
ในตวั อยา ง เปนการตรวจสอบการเขา สูร ะบบของเวบ็ ไซต เราไดส รา ง Expression ที่ซับซอนข้นึ โดยมตี วั แปร $username และ
$password เพอ่ื ใหในบล็อคคาํ สงั่ ทํางานช่ือผใู ชตองเปน "sam43" และรหสั ผานตองเปน "1234" และเนื่องจากคาในตัวแปรทําให
Expression เปน จรงิ ทาํ ใหโ ปรแกรมแสดงขอ ความวา "Login succeeded."
คุณอาจจะลองเปลยี่ นคา ในตัวแปรเปนคาอนื่ จะพบวาในบลอ็ คคาํ สง่ั If ไมท าํ งานเพราะวาเงอื่ นไขทีใ่ หไ มเ ปน จรงิ
คําสง่ั If Else
คําสั่ง If Else ใชสาํ หรบั ตรวจสอบเงอื่ นไขเชน เดียวกับคําส่ัง If แตในการทาํ งานจะมีการเพิม่ บลอ็ คของคาํ สง่ั else เขามา
ถาหากเงอ่ื นไขในคาํ ส่ัง If ไมเปนจริง มาดตู วั อยางการใชคาํ สง่ั If Else ในภาษา PHP
<?php
$money = 80;
if ($money >= 100) {
echo "Buy a video game.";
} else {
echo "Buy a book.";
}
?>
ในตัวอยางเปนการใชง านคาํ ส่ัง If Else กับสถาณการณท เ่ี ราไดพ ูดถงึ กอ นหนา นี้ เรามตี ัวแปร $money เกบ็ คาของจํานวนเงิน ถามี
เงินมากกวาหรือเทากับ 100 เหรยี ญเราจะซอ้ื วดิ โี อเกม แตถา ไมใ ชจ ะซ้อื หนงั สอื แทน และเนือ่ งจากเราไดกาํ หนดคา ในตัวแปรเพยี ง
80 โปรแกรมจึงทาํ งานในบลอ็ คของคาํ สัง่ Else แทน
Buy a book.
น่เี ปนผลลพั ธข องโปรแกรมเมื่อมีเงนิ ไมเ พยี งพอ คุณลองเปล่ยี นคาในตวั แปรใหมากกวา 100 และดผู ลลัพธข องมนั ใหมอีกครงั้
คาํ ส่งั If Else-If
ในคําส่ัง If-Else เปน คําสั่งในการสรา งเงอื่ นไขแบบสองทางเลือกหรือจริงและไมจ ริงเทา นน้ั ในภาษา PHP คุณสามารถ
สรางเงอ่ื นไขแบบหลายทางเลือกไดโดยการใชค าํ สง่ั Else-If สําหรบั เงื่อนไขเพม่ิ เติมทตี่ อ งการ เราจะยกตวั อยา งในการใชกบั
โปรแกรมคาํ นวณเกรด
<?php
$score = 79;
if ($score >= 80) {
echo "Your grade is A.";
} else if ($score >= 70) {
echo "Your grade is B.";
} else if ($score >= 60) {
echo "Your grade is C.";
} else if ($score >= 50) {
echo "Your grade is D.";
} else {
echo "Sorry, you got grade F.";
}
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
49
?>
ในตัวอยา ง เปนโปรแกรมคาํ นวณเกรดโดยการคาํ นวณจากคะแนนทม่ี ี เราใชคาํ สง่ั ตรวจสอบเงื่อนไข If-Else แบบหลายทางเลอื กใน
การสรา งเง่อื นไขใสแตล ะชวงคะแนนและเกรดท่ีจะไดร บั
Your grade is B.
น่ีเปน ผลลพั ธเ มือ่ รนั โปรแกรม เพราะวาคะแนน 79 อยูในชวงของเกรด B ทเ่ี ราไดกาํ หนดในเงื่อนไข คุณอาจจะลองเปลยี่ นเง่อื นไข
เปนแบบอื่นเพื่อดูผลลัพธ
คําสัง่ Switch
ในภาษา PHP ยังมคี ําสงั่ เลือกเงอื่ นไขอีกคําสงั่ หนึ่งคอื คาํ สั่ง Switch ซึ่งการทาํ งานของคาํ ส่ังนีจ้ ะคลายกับคําสง่ั If Else-If
ซึ่งเปนการเลือกแบบหลายทางเลอื ก แตในคาํ ส่งั Switch จะใชสาํ หรบั เปรยี บเทียบกับคา คงท่โี ดยตรงที่ไมใ ช Expression มาดู
ตวั อยางการใชง าน
<?php
$abb = "th";
switch ($abb) {
case "de":
$country = "Germany";
break;
case "th":
$country = "Thailand";
break;
case "hu":
$country = "Hungary";
break;
case "tr":
$country = "Turkey";
break;
default:
$country = "Unknown country";
}
echo "Your country is $country.";
?>
ในตวั อยางเปน โปรแกรมในการหาชอ่ื ประเทศจากรหสั ยอ โดยการใชค าํ สั่ง Switch เรามีตวั แปร $abb สาํ หรับเกบ็ รหสั ยอ ของ
ประเทศในโลก ในการใชงานจะสง เปน อากิวเมนตเ ขาไปยงั คาํ สง่ั Switch และโปรแกรมจะทาํ การตรวจสอบกบั เงือ่ นไขในแตละ case
เมอื่ เง่อื นไขตรงกับ Case ใดๆ โปรแกรมจะทาํ งานคาํ ส่งั หลงั จาก Case นั้นจนสิ้นสดุ บล็อคคําส่ัง Switch เราจําเปน ตอ งใชค ําสั่ง
break เพ่ือหยุดการทาํ งานของโปรแกรมสาํ หรบั แตละ Case
Your country is Thailand.
นเี่ ปนผลลัพธเมอื่ รันโปรแกรม ในตัวแปร $country จะมีคา เปน "Thailand" เพราะวาตรงกับเง่อื นไขใน case "th"
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
50
คําสง่ั If ซอนกนั
ในการเขียนโปรแกรมคาํ สงั่ เลอื กเงอื่ นไขสามารถทจ่ี ะซอ นกนั ได ไมวา จะเปน คาํ สง่ั If If-Else หรอื Switch เพ่ือสรา ง
เงอื่ นไขหรอื ในโปรแกรมท่ซี ับซอ นขนึ้ คณุ จะตองไดพบกับเหตกุ ารณท ค่ี าํ สง่ั เหลา นจ้ี ะซอนกันอยแู นนอน
<?php
$name = "Mateo";
$logged_in = true;
$lang = "en";
if ($logged_in) {
echo "Hello $name, you now logged in.\n";
if ($lang == "en") {
echo "The website displayed in English.\n";
} else if ($lang == "th") {
echo "The website displayed in Thai.\n";
} else {
echo "The language was not set.\n";
}
} else {
echo "You are not logged in.\n";
}
?>
ในตัวอยาง เปน การใชงานคาํ ส่ังเงือ่ นไขซอนกนั คําสัง่ If ดา นนอกเปน การตรวจสอบการเขาสรู ะบบของเว็บไซต ถา ผใู ชเขาสรู ะบบ
เราจะแสดงขอ ความทกั ทายจะมคี าํ สัง่ If ท่ีซอ นกันอยภู ายในสาํ หรับตรวจสอบภาษาท่ีจะแสดงในเวบ็ ไซต
Hello Mateo, you now logged in.
The website is displayed in English.
นเี่ ปน ผลลัพธเม่ือรันโปรแกรม ซึ่งทาํ งานในบล็อคของคาํ สง่ั ทีซ่ อ นกันของ if ($logged_in) และ if ($lang == "en") ตามลาํ ดบั
Ternary condition
Ternary condition เปน คําสง่ั ตรวจสอบเงอื่ นไขโดยมี Operand เพียงแค 3 ตัว มันเปน ทางลดั ของการใชค าํ สั่ง If-Else ซง่ึ อํานวย
ความสะดวกในกรณีทต่ี องการตรวจสอบเงอื่ นไขเพยี งเล็กนอย นเ่ี ปน รปู แบบการใชงานของ Ternary condition ในภาษา PHP
expression ? value for true : value for false;
เครื่องหมาย ? ใชส าํ หรับสราง Ternary condition โดย value for true เปน คาทเ่ี มื่อเงอ่ื นไขเปน จรงิ value for false เปน คาที่
เมื่อเงอื่ นไขเปน เทจ็ มาดตู ัวอยา งการใชงาน
<?php
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
51
$male = true;
echo "That is " . ($male ? "his" : "her") . " car.\n";
$n= 10;
echo "$n is an " . ($n % 2 == 0 ? "even": "odd") . " number.\n";
?>
ในตวั อยา งเราไดใช Ternary condition ชว ยในการเขียนโปรแกรม ถา คุณไมใ ชวิธนี คี้ ุณอาจจะตอ งเขียนในรูปแบบเตม็ ดงั นี้
$male = true;
if ($male)
echo "That his car.\n";
else
echo "That her car.\n";
การใช Ternary condition จะชว ยใหค ณุ สามารถเขยี นโปรแกรมไดส ้ันลงในบางกรณีที่โปรแกรมมสี ว นท่ีจําเปน ตอ งสราง
เงือ่ นไขที่มสี องทางเลือกและไมซบั ซอน
Info: ในบล็อคของคาํ สง่ั เลือกเง่อื นไข โดยปกตคิ ําสั่งจะตอ งอยูภ ายในวงเลบ็ { } ในกรณีทมี่ คี าํ สง่ั เพยี งคําสั่งเดยี ว คณุ
สามารถไมใสวงเว็บได
ในชีวติ ประจําวัน เรามักจะเจอกับส่ิงทเ่ี กิดขนึ้ ซ้ําๆ ในวธิ กี ารหรอื กระบวนการแบบเดมิ ยกตวั อยา งเชน ในตอนเชา ของทุกๆ วนั คุณ
เดนิ ทางไปทํางาน หรือพนกั งานขายอาหาร พวกเขาตอ งรับรายการอาหาร แลว จึงไปทําอาหาร จนถงึ นํามาใหบรกิ าลกู คา ซึ่งในแตล ะ
วนั อาจจะมีลกู คา เปน รอ ยหรอื พันคน ซงึ่ พวกเขารบั มือกับลกู คาในวธิ เี ดียวกัน
ในการเขียนโปรแกรม การวนซํ้านนั้ เปนสง่ิ ทส่ี ําคญั ในการทจี่ ะทาํ ใหโ ปรแกรมสามารถทาํ งานดวยคําสัง่ เดิมไดอ ยา งมปี ระสทิ ธิภาพ
ยกตัวอยาง เชน การแสดงรายช่อื ของสมาชิกของเวบ็ ไซตจาํ นวน 20 คน นเี่ ปนตวั อยา งทีต่ องใชคําสัง่ วนซ้ําในการจัดการ โดยมี
แนวคดิ ท่ีวา เมอื่ คณุ สามารถแสดงขอ มลู ของสมาชกิ คนแรกไดแ ลว คนตอไปก็สามารถทาํ ในแบบเดยี วกนั ได
เราจะมาเร่มิ กบั คาํ สงั่ วนซํ้าทพ่ี ืน้ ฐานท่ีสดุ ในภาษา PHP ซึง่ กค็ อื คําสง่ั While loop
คําสั่ง while loop
คําสงั่ While loop คอื คําส่ังวนซ้าํ ทีพ่ ้นื ฐานท่ีสุดในภาษา PHP มนั ใชสาํ หรับควบคมุ การทาํ งานของโปรแกรมใหทาํ งานซ้าํ ๆ
ภายใตเงอ่ื นไขที่กําหนด น่เี ปน รปู แบบของการใชง านคาํ ส่ัง While loop ในภาษา PHP
while (expression)
statements
ในการทาํ งานของคาํ สัง่ While loop จะทาํ งานในขณะที่ expression เปน จรงิ ซงึ่ statements เปน คําส่งั ภายในบล็อคของ While
loop ทีอ่ าจจะประกอบไปดวยหนง่ึ หรอื หลายคาํ ส่ัง มาดตู วั อยางการใชง านคําสั่ง While loop ในภาษา PHP
<?php
$i = 1;
while ($i <= 10) {
echo "$i\n";
$i++;
}
?>
ในตัวอยางเปนการใชคําส่งั While loop ในการแสดงผลตัวเลขจาก 1 - 10 ตัวแปร $i เปนตัวแปรกาํ หนดคาเรม่ิ ตน ในการทํางาน
และ $i <= 10 เปน เง่ือนไขของคําส่งั วนซ้ํา ซ่ึงหมายความวา โปรแกรมจะทาํ งานในบล็อคของคําสง่ั ถา หากคา ของ $i นอยกวา หรอื
เทา กบั 10 ในบล็อคของคําส่งั While loop เราแสดงผลตวั เลขและเพม่ิ คา $i ในแตล ะรอบ
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
52
1
2
3
4
5
6
7
8
9
10
น่ีเปน ผลลัพธของโปรแกรม ซึ่งเราไดแ สดงตวั เลข 1 - 10 ออกทางหนาจอ คุณอาจจะลองเขยี นโปรแกรมเพอ่ื แสดงตัวเลขจาก 30 -
50 โดยการเปลย่ี นตัวแปร $i = 30 และเงื่อนไขเปน $i <= 50และดวู า มันนาทงึ่ แคไ หน
ตอ ไปมาดตู วั อยา งเพ่มิ เตมิ กับการใชค าํ สงั่ While loop ซึง่ เราจะสรา งนาฬิกานับถอยหลังสําหรบั การปใหม
<?php
$i = 20;
$count_by = 2;
while ($i >= 0) {
echo "Count down $i\n";
$i -= $count_by;
}
echo "Firework is being fired.\n";
echo "Happy New Year 2017.\n";
?>
ในตัวอยาง เปนโปรแกรมสําหรับนบั ถอยหลังเพื่อฉลองปใหมท ่กี าํ ลงั จะมาถงึ ตวั แปร $i เปน คาเร่มิ ตน ของการนบั
และ $count_by สาํ หรบั การนับคา ลงทลี ะของการนับ เงื่อนไขในคาํ สัง่ While loop คือ $i >= 0 เราจะทําการนับถา หากการนบั ยัง
ไมถ ึง 0 ในแตล ะรอบเราลดคา ของตัวแปร $i ดวยคาํ ส่ัง $i -= $count_by ซึ่งเปน การลดลงท่ีละ 2
Count down 20
Count down 18
Count down 16
Count down 14
Count down 12
Count down 10
Count down 8
Count down 6
Count down 4
Count down 2
Count down 0
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
53
Firework is being fired.
Happy New Year 2017.
นเ่ี ปนผลลัพธของโปรแกรม ซ่งึ โปรแกรมจะนับจาก 20 จนถึง 0 โดยลดลงทลี ะ 2 จะเริม่ แสดงขอ ความตอนรับปใ หม
จากในตวั อยา งท้ังสอง คุณจะเห็นวา เราสามารถใชค าํ สัง่ วนซ้ําในการควบคมุ ใหโปรแกรมทํางานแบบเดมิ ๆ โดยทเ่ี ราไมต อ งเขยี นโคด
มากมาย ซง่ึ ส่ิงทท่ี ํางานซํา้ ๆ ก็คือภายในบลอ็ คของคาํ ส่งั While loop เปน การแสดงผลตัวเลขในแตล ะรอบของการทํางาน
คําสง่ั do while loop
คาํ สงั่ Do while loop นัน้ มกี ารทํางานคลายกบั คาํ ส่ัง While loop แตส ง่ิ ท่แี ตกตางคือในคําสัง่ Do while loop จะ
ทาํ งานภายใน Loop กอนอยา งนอ ยหน่ึงรอบและตรวจสอบเงอื่ นไขในภายหลัง นี่เปน รูปแบบของการใชง านคาํ ส่งั Do while loop
ในภาษา PHP
do {
statements
} while (expression);
ในการใชง านคําสั่ง Do while loop นนั้ สวนของการตรวจสอบเงอื่ นไข expression จะอยตู อนทา ย นน่ั หมายความจะตองมีการ
ทาํ งานในลปู อยา งนอ ยแนน อน 1 รอบ มาดตู ัวอยา งการใชงานคําสั่ง Do while loop ในภาษา PHP กับโปรแกรมการสุมตัวเลข
<?php
do {
$number = rand(0, 8);
echo "Random number $number\n";
} while ($number != 0);
?>
ในตวั อยา ง เปนการใชคาํ สง่ั Do while loop ในการสุมตวั เลขระหวาง 0 - 8 และโปรแกรมจะทํางานใน Loop ในขณะทคี่ า ท่สี มุ ได
ไมใช 0 ในเงอ่ื นไข $number != 0
Random number 1
Random number 1
Random number 3
Random number 2
Random number 6
Random number 1
Random number 5
Random number 6
Random number 0
Yeah! Random stopped, catch up 0.
นีเ่ ปน ผลลพั ธของโปรแกรม ซ่ึงในบางสถานการณของการเขยี นโปรแกรม คณุ อาจจะตองใชคาํ สั่ง Do while loop เพือ่ อาํ นวยความ
สะดวก เชน การทํางานทเี่ งื่อนไขตองข้ึนกบั คากอ นหนา ในโปรแกรม อยางไรกต็ ามทง้ั คาํ ส่งั While loop และ Do while loop
สามารถใชแทนกนั ได ในตวั อยางขา งตนนีเ่ ปนโคดเม่ือเราเขยี นโดยใชค าํ สัง่ While loop
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
54
<?php
$number = rand(0, 8);
echo "Random number $number\n";
while ($number != 0) {
$number = rand(0, 8);
echo "Random number $number\n";
}
echo "Yeah! Random stopped, catch up 0.\n";
?>
เพราะวาเราตองการสุม คา และแสดงผลจากการสมุ ทีไ่ ด คุณอาจจะตอ งเขยี นคําสัง่ เดมิ เพิม่ ขึ้นมาเมอื่ ใช While loop สําหรบั ปญ หานี้
ดงั นัน้ ในการเขียนโปรแกรมคุณจะตอ งเขา ใจวาควรจะใชค ําสั่งแบบไหนในการแกปญหา
คําสง่ั for loop
คําสง่ั For loop คอื คําสง่ั วนซ้ําทมี่ กี ารทาํ งานในจาํ นวนรอบทแี่ นน อน ซ่งึ สามารถกําหนดคา เริม่ ตน เง่ือนไข และการ
เปลี่ยนแปลงไวท เ่ี ดยี วกันในตอนตน ของ Loop ทาํ ใหการเขยี นโปรแกรมสัน้ และกระทัดรดั ขึน้ นี่เปน รปู แบบของการใชง านคาํ สงั่ For
loop ในภาษา PHP
for (initializing; expression; updating)
statements
โดยที่ initializing เปนการกาํ หนดคาเรม่ิ ตน สําหรับการทาํ งานของ Loop expression เปนเงอ่ื นไขท่ีจะใหท าํ งานภายใน
Loop updating เปน การเปล่ยี นแปลงของขอ มลู เมอ่ื เสร็จการทาํ งานแตละรอบของ Loop มาดูตวั อยา งการใชง านคําสงั่ For loop
ในภาษา PHP
<?php
for ($i = 1; $i <= 10; $i++) {
echo "$i, ";
}
echo "\n";
for ($i = 0; $i <= 50; $i += 5) {
echo "$i, ";
}
echo "\n";
for ($i = 10; $i >= -10; $i -= 2) {
echo "$i, ";
}
echo "\n";
?>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
55
ในตัวอยาง เปนการใชง านคําสั่ง For loop เพือ่ แสดงตัวเลข ซ่งึ คุณจะเหน็ วา เราไดก าํ หนดคาเริม่ ตน เง่ือนไข และการเปลี่ยนแปลงใน
ตอนตน ของ Loop ทําใหคําสง่ั For loop เปนคาํ สง่ั ทส่ี ะดวกและงา ยตอ การใชงาน ในลปู แรกเปนการแสดงตัวเลขต้ังแต 1 - 10 ลูป
ทีส่ องเปนการแสดงตัวเลขต้ังแต 0 - 50 โดยเพ่ิมคาทลี ะ 5 และในลปู สุดทา ย เปนการแสดงตัวเลขจาก 10 - -10 โดยลดคาทลี ะ 2
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50,
10, 8, 6, 4, 2, 0, -2, -4, -6, -8, -10,
และน่ีเปนผลลพั ธการทํางานของโปรแกรมในการแสดงผลตัวเลขในแบบตางๆ ในภาษา PHP
ตอ ไปมาดตู วั อยา งเพิ่มเตมิ กับการใชงานคาํ ส่งั Loop กับการคาํ นวณทางคณิตศาสตร
<?php
// Finding summation between number m and n
$m = 10;
$n = 50;
$sum = 0;
for ($i = $m; $i <= $n; $i++) {
$sum += $i;
}
echo "Sum between $m to $n = $sum\n";
?>
ในตวั อยา ง เปน การใชคาํ ส่งั For loop ในการหาผลรวมของตวั เลขระหวา งตวั แปร $m และ $n ในแตละรอบเราจะบวกคาของ
ตวั เลขลงไปในตัวแปร $sum
Sum between 10 to 50 = 1230
นเ่ี ปนผลลพั ธการทํางานของโปรแกรม
ตวั อยางการใชคาํ สั่ง For loop ในการหาคา Factorial ของตวั เลขในภาษา PHP
<?php
// Finding a factorial of n'th number
$n = 5;
$fac = 1;
for ($i = 1; $i <= $n; $i++) {
$fac *= $i;
}
echo "$n! = $fac";
?>
ในตวั อยางเปน โปรแกรมในการหาคา Factorial ของตวั เลข n โดยสตู รการหาคา Factorial กค็ ือการนําตัวเลขระหวา ง 1 - n มาคณู
ซง่ึ เราสามารถใชคาํ สัง่ For loop สาํ หรับจัดการเรอ่ื งนี้ไดอยา งงายดาย
เรามตี ัวอยางเพม่ิ เตมิ ในการใชง านคําสงั่ For loop ในโปรแกรมนีเ้ ปน โปรแกรมในการแปลงอณุ หภมู จิ ากองศาเซลเซยี สไปเปนองศา
ฟาเรนไฮตแ ละเคลวิน และแสดงผลเปนแบบตาราง
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
56
<?php
echo "Celsius\t|Fahrenheit|Kelvin\t|Description\n";
$description = [
0 => "Freezing point of water",
20 => "Room temperature",
36 => "Body temperature",
100 => "Boiling point of water"
];
for ($celcius = 0; $celcius <= 100; $celcius += 4) {
$fahrenheit = ($celcius * 1.8) + 32;
$kelvin = $celcius + 273.15;
echo "$celcius\t| $fahrenheit\t| $kelvin";
if (array_key_exists($celcius, $description)) {
echo "\t$description[$celcius]";
}
echo "\n";
}
?>
ในตัวอยางเปนโปรแกรมในการแปลงอณุ หภมู จิ ากองศาเซลเซยี สไปเปน องศาฟาเรนไฮตแ ละเคลวนิ โดยเรม่ิ ตน จาก 0 - 100 องศา
และเพม่ิ ขนึ้ ทลี ะ 4 และอาเรย $description สําหรบั เก็บคาํ อธิบายแตละชว งอณุ ภมู ิไวโ ดยมีคา ขององศาเซลเซยี สเปนคีย เราใช
ฟงกช ัน array_key_exists() ในการตรวจสอบถาในอุณห๓ูมิน้มี ีการกําหนดคาํ อธิบายเพื่อนาํ ไปแสดงในคอลมั น Description ของ
ตาราง
$fahrenheit = ($celcius * 1.8) + 32;
$kelvin = $celcius + 273.15;
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
57
นเ่ี ปนสูตรของการแปลงอณุ หภูมิ สาํ หรับการแปลงจากองศาเซลเซียสไปเปนองศาฟาเรนไฮตจะมสี ูตรเปน T(F) = T(C) * 5 / 9 +
32 และจากองศาเซลเซยี สเปน เคลวินมสี ตู รเปน K = T(C) + 273.15
Celsius |Fahrenheit|Kelvin |Description
0 | 32 | 273.15 Freezing point of water
4 | 39.2 | 277.15
8 | 46.4 | 281.15
12 | 53.6 | 285.15
16 | 60.8 | 289.15
20 | 68 | 293.15 Room temperature
24 | 75.2 | 297.15
28 | 82.4 | 301.15
32 | 89.6 | 305.15
36 | 96.8 | 309.15 Body temperature
40 | 104 | 313.15
44 | 111.2 | 317.15
48 | 118.4 | 321.15
52 | 125.6 | 325.15
56 | 132.8 | 329.15
60 | 140 | 333.15
64 | 147.2 | 337.15
68 | 154.4 | 341.15
72 | 161.6 | 345.15
76 | 168.8 | 349.15
80 | 176 | 353.15
84 | 183.2 | 357.15
88 | 190.4 | 361.15
92 | 197.6 | 365.15
96 | 204.8 | 369.15
100 | 212 | 373.15 Boiling point of water
นเ่ี ปน ผลลัพธการทํางานของโปรแกรม
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
58
คําสงั่ foreach loop
คาํ ส่ัง Foreach loop ถูกออกแบบมาใหใชงานกับอาเรย มันใชสาํ หรบั วนอานคาในอาเรยโ ดยจะเร่มิ จากสมาชิกตวั แรก
จนถึงสมาชิกตัวสดุ ทา ย มาดตู ัวอยา งการใชง าน Foreach ในภาษา PHP
<?php
// foreach with normal array
$numbers = [10, 20, 30, 40, 50];
foreach ($numbers as $el) {
echo "$el\n";
}
// foreach with key value array
$country["us"] = "United State";
$country["de"] = "German";
$country["uk"] = "Ukraine";
$country["sk"] = "Slovakia";
foreach ($country as $key => $value) {
echo "$key = $value\n";
}
?>
ในตวั อยา งเปน การใชค าํ ส่ัง Foreach ท้งั การอา นคา จากอาเรยแบบปกตแิ ละแบบ Key value โดยการทํางานของคําสั่ง Foreach
จะวนอา นคาภายในอาเรยต ้งั แตส มาชิกตวั แรกจนถงึ ตัวสดุ ทา ย ในแตล ะรอบของการทํางานขอ มูลจะถกู เก็บในตวั แปร $el และ
สาํ หรับแบบ Key value นนั้ จะเกบ็ ทั้ง Key และ Value ในตัวแปร $key และ $value ตามลาํ ดับ คณุ สามารถเรยี นรูเ ก่ียวกับอาเรย
ในบทของอาเรย
10
20
30
40
50
us = United State
de = German
uk = Ukraine
sk = Slovakia
นีเ่ ปนผลลพั ธข องการใชคาํ สั่ง Foreach loop กบั อาเรยในภาษา PHP
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
59
คําสั่ง break
คําสัง่ break คอื คาํ สัง่ สาํ หรบั ในการควบคุมการทํางานของ Loop เพือ่ ใหหยุดการทาํ งานในทนั ที ซึ่งโดยปกตแิ ลว
โปรแกรมจะทํางานใน Loop จนกวาเง่ือนไขจะไมเปนจรงิ คณุ สามารถใชคาํ สงั่ break เพอ่ื บังคับใหโปรแกรมจบการทาํ งานจาก
Loop ได มาดตู วั อยา งการใชคาํ สง่ั ฺbreak ในภาษา PHP
<?php
for ($i = 1; $i <= 10; $i++) {
echo "$i, ";
if ($i == 5) {
break;
}
}
?>
ในตัวอยา ง เปน โปรแกรมในการใชคําสง่ั break เพ่อื หยุดการทํางานเมอื่ คา ของ $i เทา กับ 5 ถงึ แมเงอื่ นไขการทาํ งานของ Loop จะ
ยงั คงเปนจรงิ แตเ มื่อโปรแกรมพบกับคาํ สั่ง break มันจะออกจาก Loop ในทนั ทโี ดยไมส นใจเง่อื นไขอกี ตอไป
1, 2, 3, 4, 5,
นเ่ี ปนผลลพั ธการทาํ งานของโปรแกรม
คําสง่ั continue
คําส่ัง continue คือสําหรับในการควบคุมการทาํ งานของ Loop เชน เดียวกนั กับคาํ สั่ง break แตค าํ สงั่ continue จะขาม
การทาํ งานไปรอบตอ ไปในทันที โดยทไี่ มส นใจคําส่ังการทํางานหลงั จากมนั มาดตู ัวอยา งการใชง านของคาํ สั่ง continue ในภาษา
PHP
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == 0) {
continue;
}
echo "$i, ";
}
?>
ในตวั อยาง เราใชค ําส่งั continue ในการบังคับใหโปรแกรมทํางานรอบตอไปในทันทเี มื่อคา ของ $i นน้ั เปนเลขคู นนั่ หมายความวา
คาํ สั่งหลงั จากนั้น echo "$i, "; จะถกู ขามการทํางานไป
1, 3, 5, 7, 9,
นเ่ี ปน ผลลพั ธข องโปรแกรม ซึ่งคณุ จะเหน็ วา เลขจาํ นวนคูถกู ขามการแสดงผลไปจากการทาํ งานของคําสงั่ continue
ท้ังคําส่ัง break และ continue สามารถใชไ ดกับ Loop ทกุ ประเภททไี่ ดกลา วมาในบทนี้ ถงึ แมว าในตวั อยางของเราแสดงเพยี งแค
การใชง านกับคําสง่ั For loop กต็ าม
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
60
คําส่ัง For loop ซอน For loop
Loop ทุกประเภทสามารถซอนกนั ได เชน เดย่ี วกันกบั คาํ ส่ังเลือกเงอื่ นไข ซึ่งการใชคําสงั่ Loop ซอนกันจะใชจ ดั การกบั งาน
ประเภททม่ี ีการทํางานแบบสองขั้นหรือสองมิติ เชน อาเรยหรือตาราง ในตวั อยา งน้เี ราเขยี นโปรแกรมเพือ่ วาดตน ครสิ ตม าสโดยการ
ใชค ําสง่ั For loop ซอนกัน
<?php
$size = 10;
// Draw leaves
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size * 2; $j++) {
if ($i >= $size - $j - 1 &&
$size - $i <= 2* $size - $j - 1)
echo "*";
else
echo " ";
}
echo "\n";
}
// Draw tree body
for ($i = 0; $i < 2; $i++) {
for ($j = 0; $j < $size * 2; $j++) {
if ($j >= $size - 2 && $j <= $size)
echo "*";
else
echo " ";
}
echo "\n";
}
echo "marcuscode.com's Christmas tree";
?>
ในโปรแกรมของเราแบง การทาํ งานออกเปน 2 สว นสาํ หรับการวาดตนครสิ ตมาส คอื สวนของการวาดใบและตนไม ซงึ่ เปนการซอ น
กนั สองช้ัน ลูปภายนอกใชตัวแปร $i เปน Index สาํ หรบั จดั การการวาดในแตล ะแถว และลูปภายในใชต ัวแปร $j เปน Index สาํ หรบั
จดั การการวาดในแตล ะคอลัมน และตวั แปร $size เปน การกําหนดขนาดใหกบั ตน ครสิ ตม าส
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
61
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
***
***
marcuscode.com's Christmas tree
นีเ่ ปน ผลลพั ธข องตน ครสิ ตม าสจากโปรแกรมของเรา
อาเรย
อาเรย (Array) คือประเภทขอ มูลที่เก็บขอ มูลเปนชุดลําดับเรยี งตอ กนั ในหนวยความจาํ อาเรยเ ปน ตัวแปรประเภทหน่งึ ในภาษา PHP
ท่ีสามารถเก็บขอมลู ไดม ากกวา หนง่ึ คา อาเรยช วยอํานวยความสะดวกในกรณีที่เราตอ งการจดั การขอ มลู ประเภทเดยี วกันเปนจํานวน
มาก ยกตัวอยา งเชน คุณตอ งการเก็บคะแนนของนักเรยี น 10 คน การใชอาเรยจึงเปน สงิ่ ท่สี ะดวก
อาเรยในภาษา PHP นน้ั สามารถเกบ็ ขอ มลู ไดทุกประเภททงั้ Primitive type ออบเจค็ และ Resource อาเรยส ามารถมไี ดหลายมติ ิ
หรอื เราเรียกวาอาเรยข องอาเรย นอกจากนี้อาเรยย ังมีฟงกชนั อํานวยความสะดวกในการจดั การขอ มลู มากมายในภาษา PHP
ประกาศและใชงานอาเรย
กอ นเริ่มใชง านอาเรย เราจะใหคณุ เห็นถงึ ความแตกตา งระหวางการใชงานอาเรยและไมใ ชสําหรบั จดั การขอมลู จาํ นวนมาก
คุณมตี วั เลข 5 ตวั ทีต่ อ งการเกบ็ ในตวั แปรและนําตวั เลขเหลานนั้ มาคาํ นวณ
$number1 = 10;
$number2 = 20;
$number3 = 30;
$number4 = 40;
$number5 = 50;
คาํ ตอบกค็ ือคณุ ตองประกาศตัวแปร 5 ตวั สาํ หรบั เก็บขอ มลู เหลาน้ี ในตอนน้ีเราจะใชอาเรยส าํ หรับเกบ็ ขอ มลู เหลา นี้แทน
$numbers = [10, 20, 30, 40, 50];
ในตัวอยางขา งบน เราไดเ ปลย่ี นมาใชอ าเรยสาํ หรับเกบ็ ขอมลู ตัวเลขท้งั 5 ตัวแทน ซง่ึ การประกาศตัวแปรอาเรยน นั้ คา จะลอมดว ย []
และแตล ะคาจะคน่ั ดวยเครือ่ งหมายคอมมา ,
<?php
$numbers = [15, 28, 34, 49, 56, 82];
echo $numbers[0] . "\n";
$numbers[3] = 100;
echo $numbers[3] . "\n";
print_r($numbers);
?>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
62
ในตวั อยา งเราไดป ระกาศอาเรย $numbers ซ่ึงเก็บตัวเลข 6 ตวั เพอื่ เขาถึงคา ภายในตวั แปรอาเรยเ ราเขาถงึ ผาน Index ของมัน ซ่งึ
Index ของอาเรยใ นภาษา PHP นนั้ เรมิ่ จาก 0 ดงั น้ันในตวั อยางดังกลาวคณุ สามารถเขา ถึงขอ มูลในอาเรยไดจาก $numbers[0] ถึง
$numbers[5] ซึ่งเปน สมาชิกตัวแรกและตัวสดุ ทายในอาเรยต ามลาํ ดับ
echo $numbers[0] . "\n";
$numbers[3] = 100;
echo $numbers[3] . "\n";
เราไดแ สดงผลขอ มูลในตําแหนง แรกของอาเรยดว ย $numbers[0] และเปลย่ี นคาขอมลู ตาํ แหนงท่ี 4 เปน 100 ใน $numbers[3]
และแสดงผลออกมา
print_r($numbers);
ฟงกช นั print_r() ใชส ําหรับแสดงผลขอ มลู ในอาเรยท่ปี ระกอบไปดว ย Index และคาภายในอาเรย
15
100
Array
(
[0] => 15
[1] => 28
[2] => 34
[3] => 100
[4] => 56
[5] => 82
)
นเี่ ปนผลลัพธของโปรแกรมในการแสดงผลขอ มลู ในอาเรย
<?php
$names = ["Marius", "Perseus", "Zeus", "Poseidon"];
$mixed = [1, "PHP", "C#", 1.54, true];
$empty = [];
$days = ["Sunday"];
array_push($days, "Monday");
array_push($days, "Tuesday");
$days[] = "Wednesday";
$days[] = "Thursday";
$planets[0] = "Mercury";
$planets[3] = "Mars";
$planets[4] = "Jupiter";
$planets[-1] = "Sun";
print_r($names);
print_r($mixed);
print_r($empty);
print_r($days);
print_r($planets);
?>
ตอ ไปมาดตู ัวอยา งการประกาศอาเรยในรปู แบบตางๆ ทท่ี ําไดในภาษา PHP
$names = ["Marius", "Perseus", "Zeus", "Poseidon"];
$mixed = [1, "PHP", "C#", 1.54, true];
$empty = [];
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
63
ในตวั อยา งเราไดป ระกาศอาเรย $names สําหรบั เกบ็ ขอ มลู ประเภท String และในภาษา PHP อาเรยส ามารถเกบ็ ขอมลู ท่ตี า ง
ประเภทกนั ในตวั แปรเดยี วไดเ หมอื นตัวแปร $mixed และในตัวแปร $empty เปน อาเรยว า งหรืออาเรยท ไ่ี มม ีสมาชกิ อยู
$days = ["Sunday"];
array_push($days, "Monday");
array_push($days, "Tuesday");
$days[] = "Wednesday";
$days[] = "Thursday";
หลังจากทป่ี ระกาศอาเรยแ ลว คณุ สามารถเพมิ่ ขอ มลู เขา มาในภายหลงั โดยใชฟงกชัน array_push() หรอื ใชการเพ่มิ ในรูปแบบของ
$days[] ซงึ่ Index ของอาเรยจ ะเพ่ิมขน้ึ ทีละ 1 จาก Index ลา สุด
$planets[0] = "Mercury";
$planets[3] = "Mars";
$planets[4] = "Jupiter";
$planets[-1] = "Sun";
ในภาษา PHP เราสามารถกําหนดคา ใหก บั อาเรยส ําหรบั บาง Index ได และ Index ของอาเรยส ามารถเปน คาลบไดเชน กนั
อาเรย Key value
ในภาษา PHP คุณสามารถประกาศอาเรยท่มี ี Index เปน ขอ มลู ประเภทอนื่ นอกจาก Integer ได ซงึ่ เราเรียกวา Key array
มาดูตวั อยางการประกาศและใชง าน
<?php
$country["us"] = "United State";
$country["de"] = "German";
$country["uk"] = "Ukraine";
$country["sk"] = "Slovakia";
$country["th"] = "Thaiand";
print_r($country);
?>
ในตวั อยา งเปนการประกาศอาเรย โดยเราใช String เปน Key (Index) ของอาเรย ในการเขา ถึงขอ มูลของอาเรยเ ราจะเขาถงึ จากคยี
ทีไ่ ดกําหนดขึน้ เชน $country["uk"] เปน การเขาถึงคา ของ "Ukraine" หรือใชสําหรับการกําหนดคา สาํ หรับ Key นี้
การใชค ําสัง่ For loop กบั อาเรย
เนอ่ื งจากอาเรยน ้นั เก็บขอ มูลเปน ลาํ ดบั และมกี ารเขา ถึงผา น Index ดงั นั้นคาํ สง่ั For loop กับอาเรยจ ึงเปน สิง่ ทจี่ าํ เปนใน
การเขยี นโปรแกรม ซงึ่ โดยท่วั ไปแลวในการเขียนโปรแกรม เรามกั จะใชคาํ สงั่ For loop กบั อาเรยเ สมอ
<?php
$numbers = [];
for ($i = 0; $i < 10; $i++) {
$numbers[] = rand(1, 100);
}
echo "Random numbers: ";
for ($i = 0; $i < 10; $i++) {
echo $numbers[$i], ", ";
}
?>
ในตวั อยางเปนการใชค ําส่งั For loop กับอาเรย ใน Loop แรกเราไดทาํ การวนรอบการสมุ ตัวเลขระหวา ง 1 - 100 ดวยฟงกชนั
rand() จํานวน 10 ตวั และใสในอาเรย $numbers และใน For loop ทส่ี องเปนการวนอานคาภายในอาเรย เราใชตวั แปร $i เปน
Index ในการเขา ถึงคาภายในอาเรย $numbers[$i]
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
64
Random numbers: 7, 92, 39, 32, 75, 67, 23, 29, 8, 73,
นี่เปน ผลลพั ธเ ม่ือรันโปรแกรม ตัวเลขนน้ั ไดจ ากการสุมซงึ่ อาจจะแตกตา งกนั ในการรนั แตล ะครง้ั
การใชค ําสั่ง Foreach loop กบั อาเรย
คาํ สง่ั Foreach loop ถูกออกแบบมาใหใ ชง านกบั อาเรย มันใชสาํ หรับวนอานคา ในอาเรยโ ดยจะเร่มิ จากสมาชกิ ตวั แรก
จนถงึ สมาชิกตวั สดุ ทาย มาดตู ัวอยา งการใชง าน Foreach ในภาษา PHP
<?php
// foreach with normal array
$numbers = [10, 20, 30, 40, 50];
foreach ($numbers as $el) {
echo "$el\n";
}
// foreach with key value array
$country["us"] = "United State";
$country["de"] = "German";
$country["uk"] = "Ukraine";
$country["sk"] = "Slovakia";
foreach ($country as $key => $value) {
echo "$key = $value\n";
}
?>
ในตวั อยางเปน การใชคาํ สั่ง Foreach ทั้งการอา นคาจากอาเรยแ บบปกติและแบบ Key value และแสดงผลออกทางหนาจอ โดย
คําส่ัง Foreach จะวนอา นคา ภายในอาเรยจนครบ ในแตละรอบของการทํางานสาํ หรบั แบบปกตขิ อมลู จะถกู เก็บในตวั แปร $el และ
สําหรับแบบ Key value นนั้ จะเกบ็ ท้ัง Key และ Value ในตวั แปร $key และ $value ตามลาํ ดับ
อาเรย 2 มิติ
ที่ผา นมาเปนการใชง านอาเรยหนึ่งมติ ิ ในภาษา PHP คณุ สามารถสรา งอาเรยห ลายมติ ิได หรือเราเรยี กวา อาเรยข องอาเรย
ลองจนิ ตนาการวา คณุ ใสอาเรยล งไปในอาเรย ซงึ่ ตอไปนเ้ี ราจะพูดเกยี่ วกบั การประกาศและใชง านอาเรยใ น 2 มิติ
$two_dimension_array = [Array, Array, Array, ... ];
อาเรย 2 มิตินนั้ อาจจะใชกบั งานท่หี ลากหลายและแตกตา งกนั ออกไป รปู แบบการเก็บขอมลู ของมนั เหมอื นตารางหรือเมทริกซ ซ่ึง
ประกอบไปดวยแถวและคอลมั น มาดูตวั อยา งการประกาศอาเรย 2 มิตใิ นภาษา PHP
<?php
$number = [
[43, 23, 5, 43],
[13, 21, 63, 93],
[54, 65, 82, 27],
[8, 36, 73, 82],
];
print_r($number);
?>
ในตวั อยาง เปนการประกาศอาเรย 2 มติ ิ การในเขา ถงึ ขอมลู ของอาเรย เราเขา ถงึ โดยใช Index สองตวั เชน ตองการเขา ถึงตวั เลข
21 ในแถวท่สี อง จะเขา ถงึ โดย $number[1][1] และเขาถึงตัวเลข 73 ในแถวสดุ ทา ยจะเปน $number[3][2] เปน ตน
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
65
<?php
$experience["name"] = ["Mateo", "Mark", "Thomas", "Danny"];
$experience["lang"] = ["C#", "PHP", "C++", "Java"];
$experience["year"] = [2, 5, 8, 10];
for ($i = 0; $i < 4; $i++ ) {
echo $experience["name"][$i], " has ";
echo $experience["year"][$i], " years experienced in ";
echo $experience["lang"][$i], ".\n";
}
?>
ตัวอยางตอมาเปน การประยกุ ตใ ชอ าเรยส องมติ แิ บบ Key และแบบปกตใิ นการเกบ็ ขอมลู 3 อยา งของบุคล คอื ชอ่ื จํานวนป และ
ภาษาโปรแกรม สาํ หรับมติ ิภายนอกหรอื Row และมติ ภิ ายในหรอื Column เปนการเกบ็ ขอ มลู ของแตล ะคน และเราใชคาํ ส่ังสัง่ For
loop ในการวนอานขอ มูล
Mateo has 2 years experienced in C#.
Mark has 5 years experienced in PHP.
Thomas has 8 years experienced in C++.
Danny has 10 years experienced in Java.
น่ีเปน ผลลพั ธก ารทาํ งานของโปรแกรม
ในภาษา PHP เพราะวาอาเรยนันมกี ารทํางานในรูปแบบของอาเรย ดังน้ันอาเรยใ นอาเรยส ามารถมขี นาดทแ่ี ตกตางกนั ได ดังใน
ตวั อยา ง
<?php
$numbers = [
[10, 50],
[43, 7, 5],
[10],
[20, 20],
[80, 30, 100, 120]
];
for ($i = 0; $i < count($numbers); $i++) {
$sum = 0;
echo "Sum of ";
for ($j = 0; $j < count($numbers[$i]); $j++) {
$sum += $numbers[$i][$j];
echo $numbers[$i][$j] . " ";
}
echo "= $sum\n";
}
?>
ในตัวอยางเปนการประกาศอาเรย 2 มิตใิ นขนาดทไี่ มเทากัน และเราใชค าํ ส่ัง For loop ในการอา นคา ภายในอาเรย เพื่อหาขนาด
ของจํานวนแถวของอาเรยจะใชค ําสงั่ count($numbers) และขนาดของคอลมั นใ นแตล ะแถวจะใชคาํ ส่งั count($numbers[$i])
เพอ่ื เขาถงึ ขอ มูลในอาเรยเ ราใชคาํ สัง่ $numbers[$i][$j] ท่สี อดคลองไปกับการวนของคําสัง่ Loop
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
66
Sum of 10 50 = 60
Sum of 43 7 5 = 55
Sum of 10 = 10
Sum of 20 20 = 40
Sum of 80 30 100 120 = 330
น่ีเปน ผลลัพธของโปรแกรมท่แี สดงขอมลู และผลรวมของแตล ะแถว
อาเรย 3 มิตแิ ละหลายมิติ
นอกจากนค้ี ุณยังสามารถสรา งอาเรยท ่ีมากกวา 2 มิตไิ ด เชน การสรา งอาเรย 3 มิติ คุณกใ็ สอาเรย 2 มิติลงไปในอาเรย 3
มิตเิ ปน ตน แตโดยสวนมากแลว ในการเขยี นโปรแกรม เราใชม ากสดุ เพียงแค 3 มติ ิ
<?php
$two_dimension_array = [Array, Array, ...];
$three_dimension_array = [$two_dimension_array, $two_dimension_array, ... ];
...
?>
นีเ่ ปน ตัวอยา งของรูปแบบของอาเรยหลายมติ ใิ นภาษา PHP
<?php
$point = [
[
[1, 4],
[2, 3],
[5, 1],
],
[
[3, 5],
[-1, 2],
[-1, 2],
],
[
[0, 4],
[-2, 5],
[-3, 3],
[5, 2],
],
];
for ($i = 0; $i < count($cities); $i++) {
echo "Country ", $i + 1, "\n";
for ($j = 0; $j < count($cities[$i]); $j++) {
echo "City " , $j + 1, " (";
echo $cities[$i][$j][0] , ", ";
echo $cities[$i][$j][1] , ")\n";
}
}
?>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
67
ในตัวอยา งเปนการประกาศและใชง านอาเรย 3 มติ ใิ นภาษา PHP เรามตี วั แปรอาเรย $point สําหรบั เกบ็ พิกัดของเม่ืองของแตล ะ
ประกาศ อาเรยมติ ินอกสดุ หายถึงประเทศ $point[country] และถดั มาหมายถึงเมอ่ื งในประเทศน้ันๆ $point[country][city] และ
ขา งในสุดเปน พกิ ดั x และ y ซ่ึงกค็ ือ $point[country][city][0] และ $point[country][city][1] ตามลําดบั
Country 1
City 1 (1, 4)
City 2 (2, 3)
City 3 (5, 1)
Country 2
City 1 (3, 5)
City 2 (-1, 2)
City 3 (-1, 2)
Country 3
City 1 (0, 4)
City 2 (-2, 5)
City 3 (-3, 3)
City 4 (5, 2)
นเ่ี ปน การผลลพั ธเมือ่ รนั โปรแกรม ซ่งึ เปนการแสดงเมอื งและพิกดั ของแตล ะประเทศท่เี ราไดเก็บไวในอาเรย 3 มติ ิ
ในการเขียนโปรแกรม คณุ สามารถนําอาเรยไ ปประยกุ ตใ ชในรูปแบบตา งๆ ไดม ากมาย ซึ่งอาเรยเ ปน ส่ิงทมี่ ีประโยชนและสาํ คญั ในการ
เขยี นโปรแกรม สาํ หรบั ในบทน้ีท้งั หมดเปนพนื้ ฐานที่คณุ จะตอ งทราบเก่ยี วกบั อาเรย
ในภาษา PHP มฟี งกชนั อํานวยความสะดวกในการจัดการอาเรย ฟงกช ันเหลา น้เี ปน Built-in function พืน้ ฐานที่จําเปน ในการเขยี น
โปรแกรม มีฟงกชนั เก่ยี วกับอาเรยเ ปน จํานวนมากทีค่ ณุ สามารถใชไ ดใ นภาษา PHP เชน ฟง กชนั ในการคน หาขอมูล การจดั เรยี ง การ
คา หามากสดุ การหาคา นอยสดุ เปน ตน ในบทน้จี ะเปน ตัวอยา งการใชง านฟง กชันท่ีสําคญั กับอาเรย
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
68
การเรียงขอมูลในอาเรย
ในภาษา PHP มีฟงกช นั อํานวยความสะดวกในการจัดเรยี งขอ มลู คือฟงกช ัน sort() ซงึ่ เปน ฟงกช ันสําหรบั เรียงขอมลู จาก
นอ ยไปมาก และสามารถใชไ ดก ับขอมลู ทกุ ประเภทและอาเรยท ุกแบบ มาดตู วั อยางการเรยี งขอมูลในอาเรยในภาษา PHP
<?php
$names = ["Marcus", "Andrew", "Emma", "Chloe", "Thomas"];
echo "Unsorted:\n";
foreach ($names as $el) {
echo "$el ";
}
echo "\n";
// Ascending sort
sort($names);
echo "Sorted asc:\n";
foreach ($names as $el) {
echo "$el ";
}
echo "\n";
// Descending sort
rsort($names);
echo "Sorted desc:\n";
foreach ($names as $el) {
echo "$el ";
}
echo "\n";
?>
ในตัวอยาง เรามีอาเรย $names สําหรบั เกบ็ ชือ่ โปรแกรมของเราเรยี งรายชื่อในอาเรยจากนอยไปมากและมากไปนอยตามลาํ ดบั
ตวั อกั ษร ในตอนแรกเราไดท ําการแสดงขอมูลในอาเรยท ยี่ ังไมไ ดจัดเรยี งดวยคําส่ัง foreach
sort($names);
นี่เปน การเรียกใชฟงกช ัน sort() เพ่อื เรียงขอมูลในอาเรยม ากนอยไปมาก เมื่อฟงกช ันน้ีถกู ใชก ับขอ มูลทเี่ ปน ตวั อกั ษรมนั จะเรยี ง
ตามลาํ ดับตัวอักษรแทน การทาํ งานของฟงกช นั นเี้ ปน แบบการสง คา แบบ Pass by reference ลําดับของอาเรยเ ดิมจะหายไป
หลงั จากเรยี กใชงาน
rsort($names);
ฟงกช นั rsort() เปน ฟง กช ันในการขอ มลู จากมากไปนอ ย ซ่งึ ลาํ ดบั ของขอ มูลในอาเรยจะตรงกนั ขา มกับการฟงกชนั sort()
Unsorted:
Marcus Andrew Emma Chloe Thomas
Sorted asc:
Andrew Chloe Emma Marcus Thomas
Sorted desc:
Thomas Marcus Emma Chloe Andrew
น่ีเปนผลลัพธข องการทาํ งานของฟงกชันเรยี งขอ มูลในอาเรย
ฟง กช ันจัดการลําดบั ในอาเรย
นอกจากฟง กชนั สําหรบั การเรยี งขอ มูลในอาเรยแ ลว ภาษา PHP ยังมฟี งกชันในการเรียงลาํ ดับอาเรยใ นอกี รปู แบบคือ การ
เรยี งกลับและการสมุ ตาํ แหนงของอาเรย มาดตู ัวอยา งการใชงาน
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
69
<?php
$planets = ["Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"];
foreach ($planets as $el) {
echo "$el ";
}
echo "\n";
$reverse = array_reverse($planets);
foreach ($reverse as $el) {
echo "$el ";
}
echo "\n";
shuffle($planets);
foreach ($planets as $el) {
echo "$el ";
}
echo "\n";
?>
ในตวั อยาง เรามตี ัวแปร $planets ในการเก็บชื่อของดาวเคราะหในระบบสรุ ิยะของเราทัง้ 8 ดวง โดยเรยี งจากทใ่ี กลดวงอาทติ ยท ่สี ดุ
คอื ดาวพธุ และดวงดาวทไี่ กลทสี่ ดุ คอื ดาวเนปจนู
$reverse = array_reverse($planets);
ฟงกชนั array_reverse() เปน ฟงกช นั ในการเรียงลําดับของอาเรยใ นลําดบั ทีต่ รงกนั ขามกับอาเรยเ ดมิ ผลลพั ธท ไ่ี ดเปนอาเรยใหมทีม่ ี
ลาํ ดบั กลบั กัน
shuffle($planets);
ฟงกช นั shuffle() เปนฟง กชันสาํ หรบั สมุ ตาํ แหนงในอาเรยใหม
Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune
Neptune Uranus Saturn Jupiter Mars Earth Venus Mercury
Uranus Mars Neptune Saturn Jupiter Mercury Venus Earth
นีเ่ ปน ผลลัพธการทาํ งานของของโปรแกรม ซึง่ ในบรรทัดแรกเปน การแสดงผลลแบบลาํ ดบั ปกตขิ องอาเรย ในบรรทสี่ องเปนลําดับ
กลบั กัน และบรรทดั สดุ ทายเปนลาํ ดบั จากการสุม ตําแหนงใหม
ฟง กช ันนบั และหาผลรวมของอาเรย
ในภาษา PHP มฟี ง กชันสําหรบั นบั จาํ นวนสมาชิกภายในอาเรย หาผลรวมของการบวกและการคณู ของตวั เลขในอาเรย
<?php
$numbers = [5, 2, 10, 3, 9, 4, 1, 6];
echo "There are " . count($numbers) . " numbers in the array.\n";
echo "Summation of the array is " . array_sum($numbers) . ".\n";
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
70
echo "Product of the array is " . array_product($numbers) . ".\n";
?>
ในตวั อยา ง ฟงกชนั count() เปนฟง กช นั สําหรบั นบั จํานวนสมาชิกภายในอาเรย ฟง กชนั array_sum() เปน ฟงกชันสาํ หรบั หาผลรวม
ของตัวเลขในอาเรย และฟง กชัน array_product() เปนฟงกชันสาํ หรับหาผลรวมการคณู ของตัวเลขในอาเรย
There are 8 numbers in the array.
Summation of the array is 40.
Product of the array is 64800.
นเ่ี ปนผลลพั ธก ารทาํ งานของโปรแกรม
ฟง กช ัน in_array() คนหาขอ มูลในอาเรย
ในการคนหาขอมูลในอาเรยน ้ันคณุ สามารถใชฟ ง กชนั in_array() เพื่อตรวจสอบวา คา นม้ี ีอยใู นอาเรยห รอื ไม โดยฟงกชนั จะ
สง คากลับเปน true ถา หากพบ และ false ถา หากไมพ บ มาดตู วั อยา งการตรวจสอบขอ มูลวามีอยใู นอาเรยห รือไมใ นภาษา PHP
<?php
$names = ["Marcus", "James", "Danny", "Samuel"];
$find = "Thomas";
if (in_array($find, $names)) {
echo "$find is in the array.\n";
} else {
echo "$find is not in the array.\n";
}
$find = "James";
if (in_array($find, $names)) {
echo "$find is in the array.\n";
} else {
echo "$find is not in the array.\n";
}
?>
ในตวั อยา ง เปนการคน หาชือ่ ในอาเรยข อง String โดยการใสชือ่ และอาเรยเ ปน อากิวเมนตข องฟงกชัน เมื่อมชี อ่ื อยูในอาเรยโ ปรแกรม
ทาํ งานในบล็อคคาํ สงั่ ของ If และทําในคาํ สัง่ ของ Else เมื่อไมพ บ
Thomas is not in the array.
James is in the array.
น่เี ปน ผลลพั ธการทํางานของโปรแกรมเมอื่ เราไดค น หาสําหรบั Thomas และ James ในอาเรย
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
71
ฟง กชันคน หาและสุมขอ มูลจากอาเรย
ตอไปเปน ฟง กช นั คน หาขอมูลในอาเรยอกี รูปแบบหนึ่ง คือฟง กช ัน array_search() สาํ หรบั คนหาขอ มลู ในอาเรย ถาพบจะ
สงคา Index หรือ Key กลับมา ถา ไมพ บสง เปนคา false แทน
<?php
$names = ["Marcus", "James", "Danny", "Samuel"];
$index = array_search("Danny", $names);
echo "Danny is found at index = $index\n";
$random_index = array_rand($names);
echo $names[$random_index] . " is chosen to be a winner of the game.\n";
?>
ในตัวอยาง เรามอี าเรย $names ในการเก็บชอ่ื ฟงกชัน array_search() ใชสาํ หรับคน หาคา ในอาเรย เพราะวา "Danny" มอี ยใู น
อาเรย คา ทสี่ งหลับมาจึงเปน 2 ซึ่งเปน ตําแหนงของชื่อดังกลาว
$random_index = array_rand($names);
ฟงกชนั array_rand() เปน การสุม เอา Index หรือ Keys ของอาเรยตงั้ แต 1 หรอื หลายคา จากอาเรยท กี่ ําหนด ในตัวอยา งเปน การสมุ
เพยี งหน่ึงคา ถา หากคุณตอ งการสมุ หลายคาสามารถใสค า ท่ตี อ งการเปนอากวิ เมนตต ัวที่สอง ยกตวั อยา งเชน array_rand($names,
2); เปน การสมุ สองคา จากอาเรย ผลลพั ธท ี่ไดจ ะเปนอาเรย
Danny is found at index = 2
Marcus is chosen to be a winner of the game.
นเี่ ปน ผลลัพธเมอื่ รันโปรแกรมในการคนหาและการสมุ คา จากในอาเรย
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
72
ฟง กช นั จัดการเซ็ตของอาเรย
ในภาษา PHP มีฟง กชนั ในการจดั การอาเรยใ นทฤษฏีของเซต (Set theory) เชน Intersect Union และ Difference มาดู
ตวั อยา งการใชง านฟง กช นั เหลานี้
<?php
$array1 = [1, 2, 4, 5, 6, 7];
$array2 = [1, 2, 3, 5, 8, 9];
$intersect = array_intersect($array1, $array2);
echo "Intersect:\n";
display_array($intersect);
$merge = array_merge($array1, $array2);
echo "Merge:\n";
display_array($merge);
$union = array_unique($merge);
echo "Union:\n";
display_array($union);
$difference = array_diff($array1, $array2);
echo "Difference:\n";
display_array($difference);
function display_array($array) {
foreach ($array as $el) {
echo "$el, ";
}
echo "\n";
}
?>
ในตัวอยาง เราไดใ ชฟง กชนั เกย่ี วกับการจดั การอาเรยในรปู แบบของเซตในภาษา PHP ซง่ึ การทาํ งานของอาเรยในการเขียนโปรแกรม
นนั้ ใชห ลักการของเซตในการพัฒนา เรามตี วั แปรอาเรยส องตัวคือ $array1 และ $array2 และจะนํามากระทํากันในรูปแบบตา งๆ
$intersect = array_intersect($array1, $array2);
ฟง กช นั array_intersect() เปน ฟง กชนั สําหรบั หาคา ทีเ่ หมอื นกันในอาเรย ผลลพั ธท ไ่ี ดจ ะเปนอาเรยใ หมท่ีมีท้ังในอาเรย $array1
และ $array2
$merge = array_merge($array1, $array2);
ฟง กช นั array_merge() เปน ฟง กช นั ในการนาํ อาเรยม ารวมกันและไดผลลพั ธเ ปนอาเรยใหม
$union = array_unique($merge);
ในภาษา PHP นนั้ ไมม ฟี ง กช นั สาํ หรบั Union โดยตรงแตเ ราสามารถทาํ ไดโ ดยการใชฟ งกช นั array_unique() สาํ หรบั ตัดคาทซ่ี า้ํ กนั
ออกไปในอาเรย $merge ที่ไดจากการทํางานของฟงกชัน array_merge()
$difference = array_diff($array1, $array2);
ฟง กช นั array_diff() เปน ฟง กชันในการหาผลตา งของอาเรยโ ดยเอาอากิวเมนตต วั แรก $array1 และลบดวยอากวิ เมนตต ัวตอ ไป
และฟง กช นั display_array() เปน ฟงกชันทเี่ ราไดเ ขียนขน้ึ สาํ หรับแสดงขอมลู ในอาเรยส ําหรับตัวอยา งน้ี
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
73
Intersect:
1, 2, 5,
Merge:
1, 2, 4, 5, 6, 7, 1, 2, 3, 5, 8, 9,
Union:
1, 2, 4, 5, 6, 7, 3, 8, 9,
Difference:
4, 6, 7,
Unique:
A, B, C,
น่เี ปน ผลลพั ธข องโปรแกรมจากการทาํ งานของฟง กชนั เซตของอาเรย
ฟง กช ันท่ีเราไดก ลาวมาดังกลา วน้ัน ไมไดม แี คเพยี งสองพารามิเตอร แตมนั อาจจะมีตัง้ แตหนึ่งหรือหลายพารามเิ ตอรย กเวนฟงกช นั
array_unique()
array_intersect($array1);
array_intersect($array1, $array2, $array3, ...);
น่เี ปนตวั อยางการใชง านในการสงในจาํ นวนอากวิ เมนตทีแ่ ตกตา งกัน
ฟงกชนั หาคา ท่ีไมซา้ํ กันในอาเรย
ในภาษา PHP มีฟง กช นั ใหค ุณสามารถหาคาทไ่ี มนับกนั และนับคาเหลา นัน้ ได นเี่ ปน ตัวอยา งการใชงาน
<?php
$chars = ["A", "B", "A", "C", "C", "D", "D", "D"];
$unique = array_unique($chars);
$count_value = array_count_values($chars);
echo "Unique:\n";
print_r($unique);
echo "Count value:\n";
print_r($count_value);
?>
ฟง กชนั array_unique() สาํ หรับหาคาทไี่ มซา้ํ กันในอาเรย ผลลัพธท ไี ดจะเปน อาเรยใหมท่ีมีคา ไมซาํ้ กัน และฟง กช นั
array_count_values() เปนฟง กชนั สําหรับนบั จํานวนสมาชกิ ท่ีซํา้ กนั ในอาเรย ผลลัพธท ่ีไดจะเปนอาเรย Key value ท่ีมีคียเปน คา
ของขอ มูล และมีคา เปน จาํ นวนทพี่ บในอาเรยต น ฉบับ
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
74
Unique:
Array
(
[0] => A
[1] => B
[3] => C
[5] => D
)
Count value:
Array
(
[A] => 2
[B] => 1
[C] => 2
[D] => 3
)
นเ่ี ปนผลลัพธก ารทํางานของโปรแกรมสําหรับตวั อยา งการใชฟงกช ันทง้ั สอง
ฟงกช นั range() สรา งอาเรยลาํ ดบั ของตัวเลข
ฟงกชนั range() เปน ฟง กชนั สาํ หรบั สรา งอาเรยของตวั เลขแบบเรียงลําดบั กัน โดยมีการเพิ่มขน้ึ หรือลดลงในคา ที่คงท่ี
ยกตวั อยางเชน เราตองการสรา งอาเรยของตวั เลข 1 - 10 มาดูตวั อยา งการใชงานของฟงกชนั ในภาษา PHP
<?php
$number1 = range(1, 10);
echo "number1: ", implode(" ", $number1), "\n";
$number2 = range(1, 10, 2);
echo "number2: ", implode(" ", $number2), "\n";
$number3 = range(0, 1, 0.2);
echo "number3: ", implode(" ", $number3), "\n";
$number4 = range(10, -5, -1);
echo "number4: ", implode(" ", $number4), "\n";
$alphabets = range('A', 'Z', 1);
echo "alphabets: ", implode(" ", $alphabets), "\n";
?>
ในตวั อยาง เปน การสรา งอาเรยโ ดยการใชฟ ง กชัน range() โดยท่อี ากวิ เมนตตัวแรกเปนคาเริ่มตนของคาในอาเรย ตวั ท่สี องเปน คา
สุดทาย และอากิวเมนตตัวที่สามนน้ั เปน Default argument เปน คาอัพเดทลาํ ดบั ของตวั เลข โดยปกตแิ ลวจะมคี า เปน 1
$alphabets = range('A', 'Z', 1);
นอกจากน้ีฟงกชัน range() ยังสามารถใชกบั ตัวอักษรได
echo "number1: ", implode(" ", $number1), "\n";
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
75
ในตัวอยางเราไดใ ชฟ ง กชัน implode() ในนาํ ขอมูลในอาเรยม าสรา งเปน String ทคี่ ันดว ย Space " " ซึ่งมันงายกวากอ นหนา ท่เี ราใช
คาํ สง่ั foreach ในการวนอานคา ในอาเรยเ พือ่ แสดงผล
number1: 1 2 3 4 5 6 7 8 9 10
number2: 1 3 5 7 9
number3: 0 0.2 0.4 0.6 0.8 1
number4: 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5
alphabets: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
นีเ่ ปนผลลัพธก ารทํางานของโปรแกรมในการใชฟ ง กชัน range()
ฟงกชันเพมิ่ และลบสมาชกิ ในอาเรย
ในภาษา PHP คณุ สามารถเพ่มิ และนาํ ขอ มลู ออกจากอาเรยด ว ยฟงกช นั array_push() array_pop() array_unshift() และ
array_shift() ซง่ึ มกี ารทาํ งานดังนี้
<?php
$numbers = [1, 3, 5, 7, 8];
array_push($numbers, 10);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "\n";
array_pop($numbers);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "\n";
array_unshift($numbers, -1);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "\n";
array_shift($numbers);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "\n";
?>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
76
ในตัวอยา ง เปนโปรแกรมในการเพ่ิมและนาํ ขอ มลู ออกจากอาเรยดว ยฟง กชันตางๆ ท่ีมใี นภาษา PHP
array_push($numbers, 10);
ฟง กชัน array_push() ใชส าํ หรบั เพิม่ ขอมูลลงไปในตําแหนง สดุ ทา ยของอาเรย ในตวั อยา งเราไดเ พม่ิ 10 ลงไปในอาเรย
array_pop($numbers);
ฟงกชัน array_pop() เปน ฟง กช ันสําหรับนาํ ออกคาสดุ ทา ยในอาเรยแ ละสงคา ดังกลา วกลบั มา เพราะวา เราเพง่ิ จะเพมิ่ 10 ลงไปใน
อาเรยท าํ ใหมันเปน คาสดุ ทา ยท่ถี กู นําออกมา
ท้งั ฟง กชนั array_push() และ array_pop() น้นั เปนฟงกชันทมี่ กี ารทํางานในรูปแบบของ Stack ซึง่ เปนโครงสรางขอ มูลประเภท
หนึ่ง
array_unshift($numbers, -1);
ฟง กช นั array_unshift() เปนฟง กชนั สาํ หรับเพม่ิ ขอ มูลไปยงั ตําแหนง แรกของอาเรย ในขณะท่ีฟง กช นั array_push() เพม่ิ ไปยัง
ตาํ แหนงสุดทาย ในตวั อยางเราไดใ ส -1 เขาไปในตําแหนง แรกของอาเรย
array_shift($numbers);
และสดุ ทายฟง กช นั array_shift() เปนฟงกช ันสาํ หรับนาํ ขอมูลในตาํ แหนง แรกออกจากอาเรยและสง คา ดงั กลา งกลบั มา ในตวั อยา ง -
1 ถูกนําออกเพราะมันอยูต าํ แหนง แรกในอาเรย
สําหรับฟง กช ัน array_push() และ array_unshift() นน้ั คุณสามารถใสอากวิ เมนตเพอื่ เพมิ่ ขอ มลู ไดม ากกวา 1 คา ยกตัวอยา งเชน
array_unshift($numbers, 1, 2, 3) เราไดเ พิ่ม 3 ตวั เลขไปยังตําแหนง แรกของอาเรย
1, 3, 5, 7, 8, 10,
1, 3, 5, 7, 8,
-1, 1, 3, 5, 7, 8,
1, 3, 5, 7, 8,
น่เี ปนผลลพั ธการทํางของโปรแกรม
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
77
ฟงกชันของอาเรย Keys และ Values
ในภาษา PHP นนั้ มีฟงกช ันสําหรบั จัดการกับอาเรย Keys Values เพอื่ อาํ นวยความสะดวก เราจะยกตัวอยา งการใชงานสําหรับ
ฟงกชันท่ีสาํ คญั
<?php
$colors = [
"FFFFFF" => "White",
"FF0000" => "Red",
"FFFF00" => "Yellow",
"008000" => "Green",
"0000FF" => "Blue",
"000000" => "Black"
];
$keys = array_keys($colors);
$values = array_values($colors);
echo "Hex code: ";
foreach ($keys as $el) {
echo "$el ";
}
echo "\n";
echo "Color name: ";
foreach ($values as $el) {
echo "$el ";
}
echo "\n";
?>
ในตวั อยาง เปนการใชงานฟง กชนั ในการแยก Key และ Value ออกจากอาเรย $colors ซึ่งเปน อาเรยแ บบ Keys Values
$keys = array_keys($colors);
ฟง กชัน array_keys() เปน ฟงกช นั ในการแยก Keys จากอาเรยท ีก่ าํ หนด ผลลพั ธท ีไ่ ดจ ะเปนอาเรยใ หมท ่ีประกอบไปดวย Keys
$values = array_values($colors);
สําหรบั ฟง กช ัน array_values() เปน ฟง กชนั ในการแยก Values ออกจากอาเรยท ่กี าํ หนด ผลลพั ธท ีไ่ ดจะเปนอาเรยใหมท่ีประกอบไป
ดว ย Values
Hex code: FFFFFF FF0000 FFFF00 008000 0000FF 000000
Color name: White Red Yellow Green Blue Black
น่ีเปนผลลพั ธก ารทํางานของโปรแกรม ซึ่ง Keys ของอาเรยจ ะเปนรหัสของสีในฐานสิบหก และ Values จะเปนชอื่ ของสี
ตอ ไปเปน การสรางอาเรยแบบ Keys Values ดว ยฟง กชนั array_combine() ซึ่งฟงกช ันนี้มสี องอากวิ เมนตในการทํางาน อากิวเมนต
แรกเปน อาเรยสําหรบั Keys และอากิวเมนตทส่ี องเปนอาเรยส าํ หรบั Values นเี่ ปน ตวั อยางการใชง าน
<?php
$abbr = ["ca", "de", "gr", "ua", "no", "tr"];
$names = ["Canada", "Germany", "Greece", "Ukraine", "Norway", "Turkey"];
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
78
$countries = array_combine($abbr, $names);
print_r($countries);
?>
ในตวั อยาง เรามสี องอาเรยท ่จี ะนาํ มาสรา งเปนอาเรยใ หม อาเรย $abbr นั้นเปนอักษรยอของประเทศทเ่ี ราจะใชเ ปน Key และอาเรย
$names เปนชือ่ ของประเทศซึ่งจะเปน Value
Array
(
[ca] => Canada
[de] => Germany
[gr] => Greece
[ua] => Ukraine
[no] => Norway
[tr] => Turkey
)
นเ่ี ปน ผลลัพธจ ากตัวแปรอาเรย $countries ท่ไี ดส รางจากอาเรยท งั้ สอง
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
79
ฟง กช นั array_walk()
ฟง กช ัน array_walk() น้ันเปน Callback ฟงกชันทีม่ กี ารรบั พารามเิ ตอรเปน Delegates สาํ หรบั การสงทอี่ ยขู องฟง กช นั
ใหก ับฟงกช นั เพอ่ื ทาํ งาน การทํางานของฟง กช ันจะเปนการสง ทกุ คา สมาชกิ ในอาเรยไ ปทาํ ใน Callback ฟง กชัน มาดตู ัวอยา งการใช
งานในภาษา PHP
<?php
function is_prime_number($value){
$prime = true;
for ($i = 2; $i < $value; $i++) {
if ($value % $i == 0 && $i != $value) {
$prime = false;
break;
}
}
if ($prime)
echo "$value is prime number\n";
else
echo "$value is not prime number\n";
}
$numbers = [1, 2, 3, 4, 5, 6, 7, 10, 13, 15, 17];
array_walk($numbers, 'is_prime_number');
// Key value array
function domain_extension($value, $key) {
echo ".$key is an extension for websites in $value\n";
}
$countries = ["ca" => "Canada", "de" => "Germany", "ua" => "Ukraine",
"tr" => "Turkey", "th" => "Thailand"];
array_walk($countries, 'domain_extension');
?>
ในตวั อยาง เปนการทาํ งานของฟงกชัน array_walk() โดยการนําฟงกชันไปใชกับสมาชกิ ทกุ ตัวในอาเรย ฟงกช ันน้มี ีสองพารามิเตอร
คอื อาเรย และชอ่ื ของฟงกชันทตี่ อ งการเรียกใช
array_walk($numbers, 'is_prime_number');
เราไดสง อาเรย $numbers เพอ่ื ไปทํางานในฟงกช ัน is_prime_number() ซ่ึงเปน ฟงกชนั ในการตรวจสอบถา หากตัวเลขเปนจาํ นวน
เฉพาะ ซ่งึ ฟง กชันจะถูกนําไปใชก ับทกุ สมาชิกในอาเรย
array_walk($countries, 'domain_extension');
เราไดสง อาเรยแบบ Key value ไปทาํ งานในฟง กชัน domain_extension() ซ่งึ เปนฟงกชันในการแสดงการใชงานของโดเมนในแต
ละประเทศ ดังนนั้ เราจึงตอ งสรางฟงกช นั ท่ีมีสองพารามเิ ตอรส ําหรบั Key และ Value
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
80
1 is prime number
2 is prime number
3 is prime number
4 is not prime number
5 is prime number
6 is not prime number
7 is prime number
10 is not prime number
13 is prime number
15 is not prime number
17 is prime number
.ca is an extension for websites in Canada
.de is an extension for websites in Germany
.ua is an extension for websites in Ukraine
.tr is an extension for websites in Turkey
.th is an extension for websites in Thailand
นีเ่ ปนผลการทํางานของโปรแกรมสําหรบั การใชง านฟงกชัน array_walk()
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
81
ฟงกชนั ดา นวนั ที่และเวลา
วันทีเ่ รียบงา ย
ที่จาํ เปนตอ งใช format พารามเิ ตอรของ date() ฟง กช ่นั ระบุวธิ ีการจัดรปู แบบวนั ท่ี (or time)
น่คี อื ตัวละครบางตวั ทใ่ี ชกนั ท่วั ไปสาํ หรบั วนั ท่ี:
d - หมายถึงวนั ของเดอื น (01 to 31)
M - หมายถงึ เดือน (01 to 12)
Y - หมายถึงป (in four digits)
ลิตร (lowercase 'L') - หมายถงึ วนั ของสัปดาห
ตัวละครอนื่ ๆ เชน "/", "." หรือ "-" นอกจากนย้ี ังสามารถแทรกระหวางตวั ละครทจ่ี ะเพม่ิ รูปแบบเพม่ิ เติม
ตวั อยางดา นลา งรปู แบบวนั ที่วันน้ใี นสามวิธที ีแ่ ตกตางกนั
ตัวอยาง
<?php
echo "Today is " . date("Y/m/d") . "<br>";
echo "Today is " . date("Y.m.d") . "<br>";
echo "Today is " . date("Y-m-d") . "<br>";
echo "Today is " . date("l");
?>
เวลาทเี่ รียบงาย
น่ีคือตัวละครบางตวั ทีใ่ ชกนั ท่ัวไปสําหรับคร้งั :
H - รูปแบบ 12 ชวั่ โมงของช่ัวโมงดวยศนู ยช นั้ นาํ (01 to 12)
ฉัน - นาทีกบั ศนู ยชน้ั นาํ (00 to 59)
s - วนิ าทกี บั ศนู ยชั้นนาํ (00 to 59)
- การเอ็ Ante ตัวพิมพเล็กและโพสตเอม็ (am or pm)
ตัวอยางดานลา ง outputs เวลาปจ จบุ นั ในรูปแบบทีร่ ะบ:ุ
ตัวอยาง
<?php
echo "The time is " . date("h:i:sa");
?>
Parameter format date
d – วันท่ี ( 01 – 31)
D – วัน 3 ตัวอกั ษร ( Mon – Sun)
j – วันท่ีไมมี 0 นําหนา (1 to 31)
l (lowercase ‘L’) – A full textual representation of a day
N – เลขประจําวันในสปั ดาห แบบองั กฤษ เริม่ ตนวันจันทร( 1 จันทร – 7อาทิตย)
S – อกั ษรสองตัวลงทายวันที่ภาษาอังกฤษ (st [first], nd[second], rd, th)
w – เลขประจําสปั ดาหแ บบอเมรกิ ัน เริม่ ตนท่ี 0 (0 อาทติ ย – 6 เสาร)
z – วนั ท่ีใน 1 ป ( 0 -365)
W – เลขท่สี ปั ดาหใน 1 ป (เร่มิ สปั ดาหที่วันจันทร)
F – ชอื่ เดอื นแบบเต็ม (January – December)
m – เดือนท่ี มีเลข 0 นาํ ( 01 – 12)
M – ชือ่ เดือนแบบสนั้ 3 ตวั อักษร( Jan – Dec )
n – เดือนท่ี ไมมี 0 นาํ (1 to 12)
t – จํานวนวนั ในเดอื น
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
82
L – Whether it’s a leap year (1 if it is a leap year, 0 otherwise)
o – The ISO-8601 year number
Y – ป ค.ศ. 4 ดิจติ ( 2010 )
y – ป ค.ศ. 2 ดจิ ติ ( 10 )
a – ตัวหนงั สือตัวเล็ก am , pm (ทเี่ รามักเหน็ พ่หี ร่ังใช)
A – ตวั หนังสอื ตัวใหญ AM , PM
B – Swatch Internet time (000 to 999)
g – เวลาแบบ 12 ชวั่ โมง (1 – 12)
G – เวลาแบบ 24 ช่ัวโมง (0 – 23)
h – เวลาแบบ 12 ชวั่ โมง (01 to 12)
H – เวลาแบบ 24 ช่วั โมง (00 to 23)
i – นาที (00 to 59)
s – วินาที (00 to 59)
e – The timezone identifier (Examples: UTC, Atlantic/Azores)
I (capital i) – Whether the date is in daylights savings time (1 if Daylight Savings Time, 0 otherwise)
O – Difference to Greenwich time (GMT) in hours (Example: +0100)
T – Timezone setting of the PHP machine (Examples: EST, MDT)
Z – Timezone offset in seconds. The offset west of UTC is negative, and the offset east of UTC is positive (-
43200 to 43200)
c – The ISO-8601 date (e.g. 2004-02-12T15:19:21+00:00)
r – The RFC 2822 formatted date (e.g. Thu, 21 Dec 2000 16:01:07 +0200)
U – The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
Session และ Cookie ในภาษา PHP
คกุ กีค้ อื อะไร?
คกุ กี้มกั จะถกู นาํ มาใชเพือ่ ระบผุ ูใช คุกกเ้ี ปนไฟลขนาดเลก็ วาเซิรฟเวอรฝง ในเครือ่ งคอมพิวเตอรข องผใู ช แตละคร้ังท่ี
คอมพิวเตอรเครื่องเดียวกนั รองขอหนาเวบ็ เบราวเซอรจะสง คุกกเ้ี กินไป ดวย PHP คณุ ท้งั สองสามารถสรางและเรียกคา คุกกี้
PHP สรา ง / สืบคนคุกกี้
ตวั อยางตอ ไปนสี้ รา งคกุ ก้ที ่มี ีชื่อวา "user" มคี า "John Doe" คุกกีจ้ ะหมดอายหุ ลงั จาก 30 วนั (86400 * 30) "/" หมายความ
วา คกุ ก้ที ี่มีอยูในเว็บไซตท ้ังหมด (มิฉะนั้นเลอื กไดเรกทอรีท่คี ณุ ตองการ)
จากนั้นเราจะเรยี กคาของคกุ กี้ "user" (โดยใชตวั แปรทัว่ โลก $ _COOKIE) นอกจากน้เี รายังใช isset() ฟง กชั่นเพื่อดูวา คุกกจ้ี ะถกู ต้งั :
ตัวอยาง
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
83
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Note: setcookie() ฟงกช ่ันจะตองปรากฏกอน <html> แทก็
Note: คา ของคกุ กท้ี ม่ี ี urlencoded โดยอตั โนมตั เิ มือ่ มีการสงคุกก้ีและถอดรหัสเมือ่ ไดรบั โดยอัตโนมตั ิ (เพ่อื ปองกนั การ URLEncoding ใช
setrawcookie() แทน)
การปรับเปล่ยี นคา คุกก้ี
หากตองการแกไขคกุ กเี้ พ่งิ ตง้ั (again) คุกกี้โดยใช setcookie() ฟง กชั่น:
ตัวอยาง
<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
84
ลบคุกกี้
ในการลบคุกกใ้ี ช setcookie() ฟง กช ั่นท่ีมีวนั หมดอายุในอดตี ที่ผานมา:
ตัวอยาง
<?php
// set the expiration date to one hour ago
setcookie("user", "" , time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
ตรวจสอบวา Cookies จะถูกเปดใชง าน
ตัวอยางตอไปนส้ี รา งสคริปตขนาดเล็กที่จะตรวจสอบวา cookies จะเปด ใชงาน ครง้ั แรกที่พยายามท่ีจะสรา งคุกกท้ี ดสอบกบั setcookie()
ฟง กช ่นั แลวนับตัวแปรอารเรย $ _COOKIE น:้ี
ตวั อยาง
<?php
setcookie("test_cookie", "test" , time() + 3600, '/');
?>
<html>
<body>
<?php
if(count($_COOKIE) > 0) {
echo "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
85
การสงคาและรับคา PHP $ _GET, $ _POST และ $ _REQUEST
$ _GET Variable มนั คืออะไร?
ตัวแปร $ _GET ถกู ใชเพื่อดงึ ขอ มลู จากแบบฟอรม ทเี่ ขียนดวย HTML นอกจากน้ีในตัวแปร url $ _GET จะแสดงขอมลู ท่ีถายโดยตวั
แปร $ _GET ตวั อยา งเชนใชต วั อยา งทส่ี องในหนา นจี้ ะปรากฏใน url เปน ? name = 'จะเทากับขอ ความทป่ี อนลงในกลองขอ ความ'
$ _GET มขี อ จาํ กดั เกยี่ วกบั จํานวนขอมลู ที่สามารถสง ได
วธิ ีการใชงาน
กอ นที่คณุ จะสามารถใชตัวแปร $ _GET คุณตอ งมีแบบฟอรม ใน html ทมี่ เี มธอดเทา กับ GET จากนนั้ ใน PHP คณุ สามารถใชตัวแปร
$ _GET เพ่ือรับขอมูลทค่ี ุณตองการ ไวยากรณ $ _GET คือ ($ _GET ['ช่อื ของเขตขอ มูลแบบฟอรม ไปที่น'่ี ))
ตวั อยาง
ไวยากรณ $ _GET
<php?
// แสดงขอ มลู ทไ่ี ดร บั จากชอ งใสช อ่ื ชอ่ื ในแบบฟอรม
($ _GET ['ฟอรม ช่ือไปที่น่ี'])
?>
แบบฟอรม HTML พรอ ม $ _GET
<php?
// จะแสดงขอมลู ท่ีไดร ับจากแบบฟอรมที่เรียกวาชอื่
echo ($ _GET ['name']);
?>
// นีเ่ ปนแบบฟอรม html ที่สรา งกลองขอ มูลเขา และปมุ สง
// วธิ กี ารสาํ หรับฟอรม อยูใ นบรรทัดดานลา ง
<form action = "ช่ือไฟล php ที่มตี ัวแปร ($ _GET []) อยูใ นนัน้ " method = "GET">
ช่อื : <input type = "text" name = "name">
<input type = "สง " value = "สง ">
</ form>
$ _POST มันคืออะไร?
ตวั แปร _TOST $ _POST ใชเพื่อเกบ็ รวบรวมขอ มลู จากแบบฟอรม แต _POST มีความแตกตา งกนั เลก็ นอยเน่ืองจากใน _GET _
แสดงขอ มลู ใน URL และ _POST ไมได ขอ มูลทรี่ ับ $ _POST ไมส ามารถมองเห็นไดก ับผูอนื่ และจํานวนเงินทส่ี ามารถสง ไดไ ม จํากดั
จํานวนนอกจากขนาดสูงสดุ 8MB
วิธกี ารใช?
กอ นท่คี ุณจะสามารถใชต วั แปร $ _POST คุณตอ งมแี บบฟอรมใน html ท่ีมเี มธอดเทา กับ POST จากนัน้ ใน PHP คุณสามารถใชต ัว
แปร $ _POST เพื่อรับขอ มูลท่คี ณุ ตอ งการ ไวยากรณ $ _POST คือ ($ _POST ['ช่อื ของฟลดแบบฟอรมไปท่ีน'่ี ))
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
86
ตวั อยา ง
ไวยากรณ $ _POST
<php?
/ / $ _POST ไดร บั ขอ มลู จากแบบฟอรม
($ _POST ['form name goes here'))
?>
แบบฟอรม html ที่มี $ _POST
<php?
// แสดงขอ มลู ที่ไดรับจากชองใสช ่อื ช่ือในแบบฟอรม
echo ($ _POST ['name']);
?>
// น่เี ปนแบบฟอรม html ที่สรางกลอ งขอ มลู เขาและปมุ สง
// วธิ กี ารสาํ หรบั ฟอรมอยูใ นบรรทดั ดานลาง
<form action = "test.php" method = POST>
ชอ่ื : <br> <input type = "text" name = "name"> <br>
<input type = "submit" value = "สง ">
</ รูปแบบ>
$ _REQUES มันคืออะไร?
ตวั แปร $ _REQUEST เปนตวั แปรทีม่ ีเน้ือหาของตัวแปร $ _GET และ $ _POST และ $ _COOKIE
วธิ กี ารใช?
กอนท่ีคณุ จะสามารถใชต วั แปร $ _REQUEST คณุ ตองมแี บบฟอรม ใน html ที่มเี มธอดเทากับ GET และ POST จากน้ันใน PHP
คุณสามารถใชต ัวแปร $ _REQUEST เพอ่ื รบั ขอมลู ท่คี ุณตอ งการ ขนึ้ อยกู ับสง่ิ ท่ีคุณเขยี นสาํ หรับวธิ ีการในรปู แบบและใช $
_REQUEST ใน php $ _REQUEST จะใช $ _Get ถา GET เขยี นข้นึ สาํ หรบั วิธีนแี้ ละ _REQUEST จะใช $ POST ถาเขียน POST
ในเมธอด ไวยากรณ $ _REQUEST คอื ($ _REQUEST ['ชือ่ ของฟล ดฟอรม ไปทน่ี 'ี่ ))
ตัวอยาง
ไวยากรณ $ _REQUEST
<php?
// วิธนี ี้จะยงั คงเหมอื นเดมิ แตว ิธกี ารในฟอรมจะเปลีย่ นไปตามทค่ี ณุ ตองการจาก GET หรือ POST
($ _REQUEST ['ชื่อฟอรม ไปทีน่ ี่'))
?>
ใช GET สาํ หรับวธิ ีการ
<php?
// แสดงขอมูลทไี่ ดร ับจากชองใสชื่อชอ่ื ในแบบฟอรม
echo ($ _REQUEST ['name']);
?>
// นีเ่ ปนแบบฟอรม html ทีส่ รางกลอ งขอ มลู เขาและปมุ สง
// วิธกี ารสาํ หรับฟอรม อยใู นบรรทัดดา นลา ง
<form action = "test.php" method = GET>
ชื่อ: <br> <input type = "text" name = "name"> <br>
<input type = "submit" value = "สง">
</ form>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
87
ใช POST สาํ หรบั วธิ ีการ
<php?
// แสดงขอ มูลทีไ่ ดรับจากชองใสชือ่ ชอ่ื ในแบบฟอรม
echo ($ _REQUEST ['name']);
?>
// นีเ่ ปน แบบฟอรม html ที่สรางกลอ งขอมูลเขา และปุมสง
// วธิ ีการสาํ หรับฟอรม อยใู นบรรทัดดา นลาง
<form action = "test.php" method = POST>
ช่ือ: <br> <input type = "text" name = "name"> <br>
<input type = "submit" value = "สง ">
</ form>
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
บทที่ 3
MySQl
88
MySQL
MySQL คือ
คอื โปรแกรมระบบจดั การฐานขอมูล ที่พัฒนาโดยบริษทั MySQL AB มหี นาทเ่ี กบ็ ขอมลู อยางเปนระบบ รองรบั คาํ สง่ั SQL
เปน เครือ่ งมอื สาํ หรบั เกบ็ ขอ มูล ทต่ี อ งใชร วมกบั เคร่อื งมอื หรือโปรแกรมอน่ื อยางบูรณาการ เพอ่ื ใหไ ดร ะบบงานทรี่ องรับ ความ
ตอ งการของผใู ช เชน ทํางานรวมกับเครอื่ งบรกิ ารเวบ็ (Web Server) เพื่อใหบรกิ ารแกภาษาสครปิ ตทที่ ํางานฝงเครื่องบริการ
(Server-Side Script) เชน ภาษา php ภาษา aps.net หรือภาษาเจเอสพี เปนตน หรอื ทาํ งานรวมกบั โปรแกรมประยกุ ต
(Application Program) เชน ภาษาวชิ วลเบสกิ ดอทเนต็ ภาษาจาวา หรอื ภาษาซีชารป เปนตน โปรแกรมถูกออกแบบใหสามารถ
ทาํ งานไดบนระบบปฏิบตั ิการทห่ี ลากหลาย และเปน ระบบฐานขอ มลู โอเพนทซอรท (Open Source)ที่ถูกนาํ ไปใชงานมากทีส่ ดุ
Mysql จัดเปนระบบจัดการฐานขอมลู เชิงสัมพนั ธ (RDBMS : Relational Database Management System) ซึง่ เปน ท่นี ิยมใชก นั
มากในปจจุบนั
phpMyAdmin สาํ หรบั จดั การฐานขอมูล MySQL
phpMyAdmin คืออะไร
phpMyAdmin คอื โปรแกรมทถี่ ูกพฒั นาโดยใชภ าษา PHP เพื่อใชใ นการบรหิ ารจดั การฐานขอ มลู Mysql แทนการคยี
คาํ สง่ั เนอ่ื งจากถา เราจะใชฐ านขอมลู ทเี่ ปน MySQL บางครัง้ จะมคี วามลาํ บากและยงุ ยากในการใชง าน ดงั นน้ั จึงมีเคร่อื งมอื ในการ
จดั การฐานขอมลู MySQL ขนึ้ มาเพอื่ ใหสามารถจดั การ ตวั DBMS ที่เปน MySQL ไดงา ยและสดวกยงิ่ ข้ึน โดย phpMyAdmin ก็ถือ
เปน เคร่ืองมอื ชนิดหนงึ่ ในการจดั การ
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
89
การสรางฐานขอ มลู ใหม
การสรางฐานขอ มลู
1.เขา สหู นา phpMyAdmin เลือกแทบ็ เมนู Databases
2.พมิ พชือ่ Database ทตี่ องการในสวนของ Create Database แลวคล๊ิก Create
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
90
4.ในหนา เมนู Database จะเห็นชอ่ื Database ทเ่ี ราสรา งขึ้นมา เปน การเสรจ็ ส้นิ การสรา ง Database
การสรางตาราง
1.เลอื ก Database ทตี่ องการ ในท่ีน้ีเลือก Database ท่ีชอ่ื rmutto_db
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
91
2. ในสว นของ Create Table
Name : ชื่อตาราง
Number of Columns : จํานวนคอลมั น (ฟลด)
แลว คล๊ิก Go
3. โปรแกรมจะขนึ้ หนาตา งมาใหใ สร ายละเอียดของ Fields
Name : ชือ่ ฟล ด
Type : ประเภทของขอ มลู
Length/Values : จํานวนคา สงู สดุ ของแตละฟล ด
Default : คา เริ่มเตน
Collation : รหัสอกั ขระ
Attributes : คุณสมบัติ
Null : วา ง
Index : คุณสมบตั ขิ องฟล ด (Primary Key)
Comments : การแสดงรายละเอยี ดของฟลด
แลว คลก๊ิ Save บนั ทึกขอมูล
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
92
4. จะเหน็ ชื่อตารางท่เี ราสรา งขึ้นมา
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
93
การตดิ ตอ ฐานขอมลู MySQL ดว ย PHP
สรางไฟล php เพอ่ื ตดิ ตอ ฐานขอ มลู
ทาํ สรา งไฟล connent_db.php ขน้ึ มา ภายใน C:\AppServ\www\bootstrap และทาํ การเขยี ว code ดงั น้ี
นาํ code นไี้ ปใสในหนา index.php
include("connect_db.php");
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
94
การใชคาํ สั่ง insert เพิ่มขอมลู ลงตาราง
1. สร้าง ไฟล์ regis.php ขึ้นมา ภายใน C:\AppServ\www\bootstrap สร้าง from ที่จะใชใ้ นการกรอกขอ้ มูล
2. ทาํ
การ
สร้าง
หนา้
regis
_sav
e.ph
p
เพ่ือ
ทาํ
การ
บนั ทึ
ก
ขอ้ มู
ล
3. นาํ
ช่ือ
หนา้ regis_save.php ไปไส่ใน action="regis_save.php" from ของหนา้ regis.php
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก
95
การใชค าํ สั่ง Select ดงึ ขอมลู จากฐานขอ มลู มาแสดงบนหนาเว็บ
การ Select ขอ มลู 1 ชดุ
1. สร้าง ไฟล์ list.php ขึน้ มา ภายใน C:\AppServ\www\bootstrap สร้าง tabal ท่ีจะใชใ้ นแสดงขอ้ มูล
2. เขียว code เพอ่ื ดึงขอ้ มูลจากฐานขอ้ มูลข้ึนมาแสดง ไวส้ ่วนบนของ table
Code ส่วนบนคือการดงั ขอ้ มูลจาก ฐานขอ้ มลู ในตาราง user_tb โดยมีเง่ือนไขให้ user_id =1
การพฒั นาเวบ็ ไซตห์ น่วยงานอยา่ งมีประสิทธิภาพ
สาํ นกั วทิ ยบริการและเทคโนโลยสี ารสนเทศ มหาวทิ ยาลยั เทคโนโลยรี าชมงคลตะวนั ออก