วันพุธที่ 8 ธันวาคม พ.ศ. 2553

การเขียน PHP เบื้องต้น

การแทรกรหัส PHPเนื่องจาก PHP เป็นภาษาในลักษณะฝังตัว (Embedded Script) โดยส่วนของภาษาจะ แทรกปนกับ Code อื่นๆ ด้วยเหตุนี้ในการเขียน PHP จึงต้องมีการแยก (Escape) ระหว่าง PHP Code และ HTML Code เพื่อให้ตัวแปรภาษาสามารถประมวลผลได้อย่างถูกต้อง ดังตัวอย่างต่อไปนี้

HTML
BODY
echo "Hello World";
?>
/BODY
/HTML
ตัวอย่างการแทรก Code PHP ลงใน Code HTML

ในการ escape ระหว่าง PHP Code และ HTML Code นั้นตามมาตรฐานที่ปรากฎในเอกสารจาก php.net มีด้วยกันทั้งสิ้น 4 วิธี ทั้งนี้บางวิธ ีจะสามารถใช้งานได้เมื่อมีการตั้งต่า Config บางค่าเท่านั้น

1. ? echo ("this is the simplest, an SGML processing instruction\n"); ?
2. ?php echo("if you want to serve XML documents, do like this\n"); ?
3.
script language="php"
echo ("some editors (like FrontPage) don't
like processing instructions");
/script

4. % echo ("You may optionally use ASP-style tags"); %>
%= $variable; # This is a shortcut for "<%echo .." %>

การแทรก Code PHP ลงใน Code HTML

วิธีที่ 1 นั้นเป็นวิธีที่นิยมใช้กันโดยทั่วไป ทั้งนี้การจะ escape โดยใช้วิธีที่นี้ เรียกว่า Short-Tag ซึ่งในการตั้งค่า PHP.INI จะต้อง กำหนดให้ short_open_tag=on ด้วย ส่วนวิธีที่ 2 นั้นเป็นการเขียนในลักษณะของ XML ซึ่งเป็นมาตรฐานปกติของตัวแปลภาษา PHP สำหรับวิธีที่ 3 นั้น เป็นวิธีการแบบดังเดิมที่นิยมใช้กันบน JavaScript หรือ Perl Script. ส่วนวิธีที่ 4 นี้มีต้นแบบมาจาก ASP ซึ่งนิยมเรียกว่า ASP tags โดยหากผู้ใช้ต้องการใช้วิธีนี้จะต้องตั้งค่า asp_tags=on ใน PHP.INI เช่นกัน

การเขียนคำสั่ง

ในการเขียนคำสั่งแต่ละอันบน PHP นั้นโครงสร้างคำสั่งแต่ละอันจะประกอบด้วยชุดคำสั่ง ค่า Parameter ต่างๆ และจบท้ายด้วยเครื่องหมาย Semicolon “;”เสมอ นอกจากนี้การจบ Escape ยังหมายถึงการจบประโยคไปในตัวด้วยเช่นกัน ดังตัวอย่างต่อไปนี้

?php
echo("1.Hello, World.\n");
echo("2.Hello, World.\n")
?

การจบประโยคของ PHP

จากตัวอย่างจะพบว่า “;” ใช้ขั้นระหว่าง Hello,World ที่ 1 และ 2 ส่วน Hello,World อันที่ 2 นั้น ไม่จำเป็นจะต้องใส่ “;” ก็ได้ เพราะว่าจบช่วง Escape ("?>") ก็มีความหมายว่าจบประโยคเช่นกัน

การเขียน Comment

Comment คือส่วนที่ใช้สำหรับอธิบายโปรแกรม ซึ่งจะไม่ถูกแปลและนำออกมาแสดงผล การเขียน Comment ในภาษา PHP นั้น จะใช้ลักษณะเช่นเดียวกับการเขึยน Comment ในภาษา C หรือ ภาษา C++ และการเขียน Coment ใน Unix-Sheสl ทั่วไป โดยการเขียนในแบบภาษา C ส่วน Comment จะขั้นอยู่ระหว่าง “/*” และ “*/” ส่วนกรณีของ Comment แบบ C++ นั้น จะนับตั้งแต่เครื่องหมาย “//” จนจบบรรทัด เช่นเดียวกันกับ Unix-Shell แต่ใน Unix-Shell นั้น จะใช้เครื่องหมาย “#” แทน ทั้งนี้การเขียนโปรแกรมที่ดี ผู้เขียนควรจะมีการแทรก Comment เพื่อใช้อธิบายการทำงานของโปรแกรมโดยย่อ และควรระมัดระวังการเขียน Comment ซ้อน ภายใน Comment ด้วย เพราะอาจมีการประมวลผลผิดพลาดใน PHP บาง Version.

?php
// This is the sample Comment (C++ Style)

# Shell Style Comment

echo("1.Hello, World.\n");

/* echo ("Test Comment (C Style)"); */

echo("2.Hello, World.\n");
?>
/*
This the comment /* (This should be avoid)*/
*/
?

การเขียน comment ในPHP

วันพฤหัสบดีที่ 2 ธันวาคม พ.ศ. 2553

การทำขั้นตอนซ้ำหรือวนลูป

การวนลูปหรือสร้างลูปเพื่อทำงานซ้ำเป็นส่วนประกอบสำคัญของโปรแกรมคอมพิวเตอร์ ในภาษา PHP ก็จะใช้โครงสร้างเหมือนภาษาซี ดังต่อไปนี้

-while-do loop
-do-while loop
-for-loop
ตัวอย่างการใช้ while-do loop เพื่อคำนวณค่า เลขยกกำลังสอง ซึ่งมีเลขฐานตั้งแต่ 1 ถึง 10

$x = 1;
while ($x <= 10) {
echo $x*$x,"\n";
$x++;
}

?>

เริ่มต้นด้วยการกำหนดตัวแปร $x ให้มีค่าเป็นหนึ่ง ซึ่งในกรณีนี้ เราใช้เป็นเลขฐาน ในการคำนวณเลขยกกำลังสอง เมื่อเข้าสู่การวนลูปแบบ while-do จะมีการตรวจดูเงื่อนไข ของการวนลูปในแต่ละครั้งว่า เงื่อนไขเป็นจริงอยู่หรือไม่ ในกรณีนี้ เรากำหนดเงื่อนไขในการวนลูปไว้ว่า ถ้าค่าของ $x มีค่าน้อยกว่าหรือเท่ากับ 10 ก็ให้ทำคำสั่งที่อยู่ภายในลูป ซึ่งก็คือ echo $x*$x,"\n"; โดยจะพิมพ์ค่าของผลคูณซึ่งหมายถึงเลขยกกำลังสองนั่นเอง หลังจากนั้น ก็ให้เพิ่มค่าของ $x ทีละหนึ่งในการวนลูปแต่ละครั้ง ค่าของ $x จะเพิ่มขึ้นเรื่อยๆจนมีค่ามากกว่า 10 เมื่อถึงเวลานั้น ก็จะเป็นการจบการวนลูป เพราะว่า เราจะได้ว่า เงื่อนไข ($x <= 10) มีค่าเป็นเท็จ

สมมุติว่า ถ้าเปลี่ยนจาก $x++ เป็น $x-- ปัญหาก็จะเกิดตามมาเวลาใช้งาน คือ แทนที่จะวนลูปแค่สิบครั้ง ก็กลับกลายเป็นว่า เป็นการวนลูปนับครั้งไม่ถ้วน เพราะว่า ค่าของ $x จะลดลงเรื่อยๆในการวนลูปแต่ละครั้ง คือเป็นลบ และค่าเป็นลบจะน้อยกว่า 10 เสมอ (ยกเว้นแต่ว่า เมื่อถึงจุดเวลาหนึ่งค่าเป็นลบมากๆ จะกระโดดกลับเป็นบวก)

ตัวอย่างการใช้ do-while loop เพื่อคำนวณค่าเลขยกกำลังสอง ซึ่งมีเลขฐานตั้งแต่ 1 ถึง 10

$x = 1;
do {
echo $x*$x,"
\n";
$x++;
} while ($x < 10);

?>

โปรดสังเกตความแตกต่างระหว่างการใช้ while-do และ do-while โดยเฉพาะตรงเงื่อนไข ในการจบการวนลูป ในกรณีของ do-while เราจะกระทำขั้นตอนในลูปก่อนหนึ่งครั้ง แล้วค่อยตรวจดูว่า เงื่อนไขในการวนลูปเป็นจริงหรือไม่ ความแตกต่างนี้ เราสามารถจำได้ง่ายๆ คือว่า ถ้าใช้ do-while จะต้องมีการทำคำสั่ง ภายในลูปหนึ่งครั้งเสมอ แม้ว่าเงื่อนไขโดยเริ่มต้นจะเป็นเท็จก็ตาม ซึ่งแตกต่างจาก while-do ถ้าเงื่อนไขเป็นเท็จตั้งแต่เริ่ม ก็จะไม่มีการทำคำสั่งที่อยู่ในลูป

อีกแบบหนึ่งสำหรับการวนลูปคือใช้ for-loop ทำได้ตามตัวอย่างต่อไปนี้

for ($x = 1; $x <=10; $x++) {
echo $x*$x,"
\n";
}

?>

ในบรรทัดที่เริ่มต้นด้วย for ระหว่างวงเล็บเปิดและปิด จะถูกแบ่งเป็นสามส่วนโดยเครื่องหมาย semicolon (;) ในส่วนแรกเราสามารถใส่คำสั่งที่ต้องการจะกระทำก่อนเข้าลูป ส่วนแรกนี้จะมีหรือไม่มีก็ได้ ในส่วนที่สองจะเป็นเงื่อนไขสำหรับการทำ loop และในส่วนที่สามจะคำสั่งที่จะต้องทำเป็นการจบท้ายลูปในแต่ละครั้ง หลักการทำงานของ for-loop จะคล้ายกับ while-do-loop

การใช้งาน for-loop และวางตำแหน่งส่วนต่างๆ อาจจะไม่จำเป็นต้องทำเหมือนกันแต่ให้ผลเหมือนกัน เช่น

$x=1;
for ( ; $x <=10; $x++) {
echo $x*$x,"
\n";
}

$x=1;
for ( ; $x <=10; ) {
echo $x*$x,"
\n";
$x++;
}

?>

จากตัวอย่างข้างบนที่ผ่านๆมา เป็นการวนลูปจะใช้การนับเลขเพิ่มขึ้นทีละหนึ่ง เรายังสามารถเขียนใหม่โดยเป็นการนับเลขลดลง ยกตัวอย่างเช่น เราต้องการจะพิมพ์ตัวเลขเรียงลำดับจาก 10,9,8...,1 ก็อาจจะเขียนคำสั่งได้ดังนี้

for ($x=10 ; $x >0; $x--) {
echo $x,"
\n";
}

?>


การใช้งาน for-loop ก็จะเหมือนกับเวลาใช้ในภาษาซี ในหลายๆเรื่อง เช่น เราสามารถใส่คำสั่งได้ มากกว่าหนึ่งโดยใช้เครื่องหมาย (,) เป็นตัวแยก ตัวอย่างเช่น


for ($x=1, $y=0 ; $x < 10; $x++, $y--) {
echo "$x $y
\n";
}

?>