องค์ประกอบของภาษา PHP และ PHP โปรแกรมแรก
![]()
โครงสร้างพื้นฐาน
ที่กล่าวไปแล้วว่า PHP สามารถใช้ร่วมกับ HTML ได้ทันทีนั้น เราจะมีสัญลักษณ์พิเศษที่แยก PHP ออกจาก
HTML
แบบที่ 1 เปิดด้วยแท็ก <? และ ปิดด้วย ?> ภายใต้แท็ก <?
?> นั้นจะเป็น PHP ทั้งหมด ตัวอย่างเช่น
|
<? echo (PHP Hello world\n) ?> |
แบบที่ 2 เปิดด้วยแท็ก <?php และ ปิดด้วย ?> ภายใต้แท็ก <?
?> นั้นจะเป็น PHP ทั้งหมด ตัวอย่างเช่น
|
<?php echo (PHP Hello world\n) ?> |
แบบที่ 3 เปิดด้วยแท็ก <script language=php> และ ปิดด้วย
</script> ภายใต้สคริปต์นั้นจะเป็น PHP ทั้งหมด ตัวอย่างเช่น
|
<script
language=php> echo (PHP Hello world\n) </script> |
แบบที่ 4 เปิดด้วยแท็ก <% และ ปิดด้วย %> ภายใต้สคริปต์นั้นจะเป็น PHP ทั้งหมด ตัวอย่างเช่น
|
<% echo (PHP Hello world\n) %> |
*** ถ้าต้องการใช้งานในแบบที่ 4 ให้แก้ไขไฟล์ php3.ini หรือ php.ini ในส่วนของ Language Options โดยเปลี่ยนที่บรรทัดของ asp_tags
เปลี่ยนจาก off เป็น on แล้วจัดเก็บไว้
เท่านี้ก็พร้อมที่จะใช้ในรูปแบบนี้แล้ว รูปแบบนี้เป็นแบบ ASP ผู้ที่เคยเขียน ASP มาก่อนจะชินกับรูปแบบนี้
การเขียน Comment
ในการเขียนโปรแกรมใดๆ
ก็ตามโดยเฉพาะระบบโปรแกรมใหญ่ๆ ส่วนจะหลงลืม หรือจำไม่ได้ว่า
แต่ละส่วนเขียนไปเพื่ออะไร จึงควรใส่หมายเหตุของโปรแกรมลงไปด้วย สำหรับ PHP นั้นใช้สัญลักษณ์ // และ # เพื่อบอกโปรแกรมว่า ไม่ต้องประมวลผล
ในส่วนนั้นๆ
PHP
โปรแกรมแรก
ลองเปิด Notepad หรือ
EditPlus ขึ้นมา แล้วสร้าง Code ดังต่อไปนี้

เสร็จแล้วจัดเก็บ
ไว้ที่ Home Directory ของ Web
Server ที่ใช้ในชื่อ test.php จากนั้นเรียก Browser
และระบุ URL ดังนี้คือ 127.0.0.1/test.php
จะเห็นลัพท์คือ คำว่า Simple Echo นั้นเขียนออกมาด้วยคำสั่ง
HTML ธรรมดา ส่วน Hi I am PHP Script นั้นเขียนออกมาจาก PHP ดังแสดงในรูป

การกำหนดตัวแปร และชนิดของข้อมูล ![]()
ใน PHP จะเหมือนกับภาษาระดับสูงอื่นๆ
นั่นคือสามารถกำหนดตัวแปรขึ้นมาใช้งานได้ ซึ่งตัวแปรใน PHP นั้นเป็นตัวแปรแบบ
scalar ต้องนำหน้าด้วยดอลลาร์ ($) ดังนี้
$a = 1234; # ตัวอย่างที่
1
$b = -123; # ตัวอย่างที่
2
ประโยชน์อย่างหนึ่งของตัวแปรนั้นคือเอาไว้เก็บข้อมูลชั่วคราว
ในการประมวลผล ซึ่งข้อมูลที่ใช้เก็บมีทั้ง ตัวอักษร ตัวเลข ดังตาราง
|
ชนิดของตัวแปร |
ข้อมูลที่เก็บ |
Integers |
ตัวเลขจำนวนเต็ม
เช่น 425,-123 |
|
Floating point numbers |
เก็บข้อมูลที่มีทศนิยมเช่น
142.35 |
|
Strings |
ข้อความเช่น Hello, |
|
Arrays |
เก็บข้อมูลเป็นชุด |
|
Object |
เก็บข้อมูลในของ Class Object หรือ Method |
|
Type Juggling |
เก็บข้อมูลในลักษณะที่ขึ้นกับ
Operator |
Integers สามารถเขียนให้อยู่ในรูปของเลขฐานได้
คือฐาน 10 ฐาน 8 และ ฐาน 16
$a = 1234; # ตัวอย่างที่
1
$b = -123; # ตัวอย่างที่
2
$c = 0123; # ตัวอย่างที่
3 มีค่าเท่ากับ (123 ฐาน 8 มีค่าเท่ากับ 83)
$d = 0x12; # ตัวอย่างที่
4 มีค่าเท่ากับ (12 ฐาน 16
มีค่าเท่ากับ 18 )
Floating
point กำหนดเลขทศนิยม
และรูปแบบยกกำลัง
$a = 1.234; # ตัวอย่างที่
1
$b = -1e23; # ตัวอย่างที่
2 = 1 x 1023
String ใช้จัดเก็บข้อความทั่วไป ซึ่งจะมีรหัสควบคุมพิเศษต่างๆ
ดังนี้
|
\n |
ใช้ขึ้นบรรทัดใหม่ |
|
\f |
เลื่อนเคอร์เซอร์ไปต้นบรรทัด
|
|
\t |
ใช้เลื่อน Tab |
|
\\ |
ใช้พิมพ์เครื่องหมาย
\ (Backslash) |
|
\$ |
ใช้พิมพ์เครื่องหมาย
$ (Dollar) |
|
\ |
ใช้พิมพ์เครื่องหมาย
(Double Quote) |
|
\[0-7]{1,3} |
ใช้กำหนดอักขระเป็นรหัสฐาน
8 |
|
\x[0-9A-Fa-f]{1,2} |
ใช้กำหนดอักขระเป็นรหัสฐาน
16 |
ตัวอย่างการใช้งาน String
ตัวอย่างที่ 1
$a = Hello; # ให้ตัวแปร a = ข้อความ Hello
$b
= $a.World; # ให้ตัวแปร b = ตัวแปร a
และตามด้วยข้อความ World
echo $b; # สั่งให้พิมพ์ข้อความในตัวแปร
b ออกมา
ตัวอย่างที่ 2
$num = 2000 ; # ให้ตัวแปร num = 2000
$c
= Year : $num; # ให้ตัวแปร c = ข้อความ year
: ตามด้วยตัวแปร num
$d = Year : $num ; # ให้ตัวแปร c = ข้อความ year : $num
echo $c; # สั่งให้พิมพ์ข้อความในตัวแปร
c ออกมา
echo $d; # สั่งให้พิมพ์ข้อความในตัวแปร
d ออกมา
ตัวอย่างที่ 3
$e = Hello World; # ให้ตัวแปร e = Hello World
$a = $e[0]; # ให้ตัวแปร
a = ตัวอักษรตัวแรกของตัวแปร e
$b = $e[strlen($e)-1];# ให้ตัวแปร last = ตัวอักษรตัวสุดท้ายของตัวแปร e
echo $first<BR>; # สั่งให้พิมพ์ข้อมูลในตัวแปร first
echo $last; # สั่งให้พิมพ์ข้อมูลในตัวแปร last
ตัวอย่างที่ 4
$a = \,\\,\$; # กำหนดอักขระพิเศษให้ตัวแปร a = ,\,$
$b = \123,\xad; # ให้ตัวแปร b = ASCII 1238, ASCII ad16
echo $a<BR>$b; # สั่งให้พิมพ์ข้อความในตัวแปร a และ b ออกมา
Array ใช้จัดเก็บข้อมูลเป็นชุดๆ
แต่ละชุดมีสมาชิกได้หลายตัว สามารถอ้างถึงสมาชิกแต่ละตัวได้ด้วยเครื่องหมาย [
]
ตัวอย่างการใช้งาน Array
ตัวอย่างที่ 1 อะเรย์ 1 มิติ
$a[0] = ABC; # ให้สมาชิก 0 ของอะเรย์ a = ข้อความ
ABC
$a[1] = ABC; # ให้สมาชิก 1 ของอะเรย์ a = ข้อความ
XYZ
$b[test] = 13; # ให้สมาชิก test ของอะเรย์ b = 13
ตัวอย่างที่ 2 อะเรย์หลายมิติ
$a[1] = $f; # Array 1 มิติ
$a[test] = $f; # Array 1 มิติ
$a[0][1] = $f; # Array 2 มิติ
$a[test][2] = $f; # Array ผสม 2 มิติ
$a[3][sample] = $f; # Array
ผสม 2 มิติ
$a[test][4][sample][5] =
$f; # Array ผสม 4 มิติ
Object ใช้จัดเก็บตัวแปร หรือชุดคำสั่ง
ที่มักจะเรียกบ่อยๆ หรือใช้งานในลักษณะพิเศษ เพื่อความสะดวกในการทำงาน
อาจอยู่ในรูปของ Class หรือ Function
เช่น
|
class test { function do_hello(){ echo Hell Everybody; } } $bar = new test; $bar->do_hello; |
จาก Code มีการสร้างคลาส ที่ชื่อ test ขึ้นมา และในคลาสนั้น มีฟังก์ชั่นชื่อ do_hello อยู่
จากนั้นสร้าง object ใหม่ขึ้นมาชื่อ bar bar จึงมีคุณสมบัติเหมือน test จึงใช้ฟังก์ชั่น do_hello
ได้ด้วย
Type
Juggling เป็นการจัดการข้อมูลในลักษณะที่ขึ้นกับ
Operator
ตัวอย่าง
$test = 5 + 10 Small
ผลได้เท่ากับ 5 เนื่องจากดูจาก Operator เป็นเครื่องหมาย + PHP จึงมองเป็นตัวเลข (Integer)
ตัวอย่างการใช้งานตัวแปร และตัวแปรระบบ
การใช้งานตัวแปร
ตัวอย่างที่ 1 การประกาศตัวแปรชนิด String หรือข้อความ
ซึ่งจะอยู่ภายใต้เครื่องหมาย
|
<? $a = Hello; $A= Everybody; echo $a, $A; ?> |
ผลที่ได้จะพิมพ์ข้อความว่า
Hello, Everybody ***สังเกตว่าตัวแปรตัวใหญ่-ตัวเล็กจะถือว่าเป็นคนละตัวกัน
ควรระวังอาจใช้ตัวแปรผิดตัวได้
ตัวอย่างที่ 2 การประกาศตัวแปรชนิด Integer หรือตัวเลข
ไม่ใช้เครื่องหมาย
|
<? $a = 50; $b= 10; echo $a+$b; ?> |
ผลที่ได้จะผลลัพท์ออกมา
คือ 60 นั่นเอง
การใช้งานตัวแปรระบบ
|
ชื่อตัวแปร |
ความหมาย และผลลัพท์ |
|
GATEWAY_INTERFACE |
เก็บค่า CGI specification เช่น CGI/1.1 |
|
SERVER_NAME |
เก็บค่า Host ที่ใช้บริการเช่น www.sourcecode.in.th |
|
SERVER_SOFTWARE |
เก็บชื่อ Software ที่ให้บริการขณะนั้นเช่น Apache/1.3.9
(UNIX) PHP/3.10.12 |
|
SERVER_PROTOCOL |
เก็บชื่อ Protocol ที่ใช้รับส่งข้อมูล เช่น HTTP/1.0
|
|
REQUEST_METHOD |
เก็บวิธีการส่งข้อมูลว่าเป็น
Post หรือ Get |
|
QUERY_STRING |
เก็บชุด String ที่ต่อท้าย URL |
|
DOCUMENT_ROOT |
เก็บค่าเส้นทางของ Root Directory ที่วิ่งไปอ่านครั้งแรก |
|
HTTP_ACCEPT_LANGUAGE |
ภาษาที่ใช้งานขณะนั้นเช่น
th |
|
HTTP_CONNECTION |
บอกสถานภาพการติดต่อ
เช่น Keep-Alive |
|
HTTP_USER_AGENT |
ชนิดของ Browser ที่เรียกเข้ามา |
|
REMOTE_ADDR |
ค่า IP Address ของเครื่อง Client |
|
REMOTE_PORT |
หมายเลข Port ที่เครื่อง Client ใช้ติดต่อเข้ามา |
|
SCRIPT_FILENAME |
บอกชื่อเอกสาร PHP รวมถึงเส้นทางใช้งานด้วย |
|
SERVER_ADMIN |
แสดงข้อมูลผู้ดูแล Web Server ที่เขียนไว้ใน file
httpd.conf |
|
SERVER_PORT |
หมายเลข Port ที่เครื่อง Server เปิดให้บริการ |
|
SERVER_SIGNATURE |
แสดงรุ่นของโปรแกรมที่ใช้, Host ที่ให้บริการ |
|
PATH_TRANSLATED |
แสดงตำแหน่งของ Script ที่กำลังใช้งาน |
|
SCRIPT_NAME |
แสดงชื่อของ Script ที่กำลังใช้งาน |
เช่น
|
<? echo
$HTTP_REMOTEADDR<BR>; echo
$HTTP_USER_AGENT<BR>; ?> |
ตัวดำเนินการ หรือ Operator ![]()
ตัวดำเนินการทางคณิตศาสตร์ Arithmatic Operators
การใช้งาน
|
ชื่อตัวดำเนินการ |
ความหมาย |
|
$a + $b |
บวก |
หาผลรวมระหว่าง $a กับ $b |
|
$a $b |
ลบ |
หารผลต่างระหว่าง $a กับ $b |
|
$a * $b |
คูณ |
หาผลคูณระหว่าง $a กับ $b |
|
$a / $b |
หาร |
หาผลหารระหว่าง $a กับ $b |
|
$a % $b |
หารเอาเศษ |
หาเศษของการหารระหว่าง
$a กับ $b |
ตัวดำเนินการเพิ่มค่า/ลดค่า Increment/Decrement
Operators
|
การใช้งาน |
ชื่อตัวดำเนินการ |
ความหมาย |
|
++$a |
Pre-increment |
เพิ่มค่า 1 ก่อนแล้วค่อยให้ค่ากับตัวแปร |
|
$a++ |
Post-increment |
ให้ค่ากับตัวแปรก่อน
แล้วค่อยเพิ่มค่า 1 |
|
--$a |
Pre-decrement |
ลดค่า 1 ก่อนแล้วค่อยให้ค่ากับตัวแปร |
|
$a-- |
Post-decrement |
ให้ค่ากับตัวแปรก่อน
แล้วค่อยลดค่า 1 |
ตัวอย่างที่ 1
$a = ($b = 4) + 5
จะเห็นว่า a เท่ากับ 9 และ b
เท่ากับ 4 เนื่องจากทำในวงเล็บก่อน
$a = $b = 4 + 5
จะเห็นว่า a และ b เท่ากับ 9
เนื่องจากมีการให้ค่าจากขวามาซ้าย
ตัวอย่างที่ 2
$a = 2;
$b = 2;
++$a;
$b++
จากตัวอย่างนี้ a และ b จะมีการเพิ่มค่าที่ละ
1 จึงเท่ากับ 3 นั่นเอง
ตัวอย่างที่ 3
$a = 9;
$b = ++$a;
จากตัวอย่างนี้ b เท่ากับ 10 เพราะมีการกระทำแบบ
Pre-increment
ตัวอย่างที่ 4
$a = 9;
$b = $a++;
จากตัวอย่างนี้ b เท่ากับ 10 เพราะมีการกระทำแบบ
Post-increment
ตัวดำเนินการทางตรรกศาสตร์ Logical Operators
|
การใช้งาน |
ชื่อตัวดำเนินการ |
ความหมาย |
|
$a and $b |
and |
เป็นจริงเมื่อ a และ b เป็นจริง |
|
$a or $b |
or |
เป็นจริงเมื่อ a หรือ b เป็นจริง
|
|
$a xor $b |
Exclusive or |
เป็นจริงเมื่อ a และ b ตัวใดตัวหนึ่งเป็นจริง
|
|
! $a |
not |
เป็นจริงเมื่อ a เป็นเท็จ |
|
$a && $b |
and |
เป็นจริงเมื่อ a และ b เป็นจริง |
|
$a || $b |
or |
เป็นจริงเมื่อ a หรือ b เป็นจริง
|
ตัวดำเนินการเปรียบเทียบ
Comparition Operators
|
การใช้งาน |
ชื่อตัวดำเนินการ |
ความหมาย |
|
$a == $b |
เท่ากับ |
เป็นจริงเมื่อ a เท่ากับ b |
|
$a != $b |
ไม่เท่ากับ |
เป็นจริงเมื่อ a ไม่เท่ากับ b |
|
$a < $b |
น้อยกว่า |
เป็นจริงเมื่อ a น้อยกว่า b |
|
$a > $b |
มากกว่า |
เป็นจริงเมื่อ a มากกว่า b |
|
$a <= $b |
น้อยกว่าหรือเท่ากับ
|
เป็นจริงเมื่อ a น้อยกว่าหรือเท่ากับ b |
|
$a >= $b |
มากกว่าหรือเท่ากับ |
เป็นจริงเมื่อ a มากกว่าหรือเท่ากับ b |
ตัวดำเนินการจัดการข้อความ
String Operators
ตัวอย่างที่ 1
$a = Hello;
$b = $a.World!;
ตัวอย่างที่ 2
$a = Hello;
$a.
= World!; #สังเกตุเครื่องหมาย (".") ที่อยู่ด้านหลังของตัวแปร $a
จาก 2 ตัวอย่างนี้จะให้ผลเหมือนกัน
ตัวดำเนินการเรียกคำสั่ง Execute Operators
ตัวอย่าง
$showes = ls -al; // ls al
เป็นคำสั่งของ UNIX
echo
<pre>$showes</pre>
ตัวควบคุมการทำงาน Control Structures ![]()
ในการเขียนโปรแกรมคอมพิวเตอร์นั้น
คอมพิวเตอร์จะทำงานจากบนลงล่าง แต่ถ้าหากต้องการให้มีการกระโดด เลือกเส้นทาง
หรือวนกลับเราจะมีตัวควบคุมการทำงานดังต่อไปนี้
if
else
elseif
คำสั่ง if เป็นคำสั่งกำหนดให้พิจารณาเงื่อนไข
ว่าค่าที่ได้เป็นจริง หรือเป็นเท็จ แล้วจึงเลือกประมวลผลตามนั้น
ตัวอย่างที่ 1
|
<? $a = 30; $b = 20; if($a > $b){ print a มากกว่า b; } ?> |
ตัวอย่างที่ 2
|
<? $a = 30; $b = 20; if($a > $b){ print a มากกว่า
b; } else{ print a ไม่มากกว่า
b; } ?> |
ตัวอย่างที่ 3
|
<? $a = 30; $b = 20; if($a > $b){ print a มากกว่า
b; } elseif($a == $b){ print a เท่ากับ
b; } else{ print a น้อยกว่า
b; } ?> |
while
คำสั่ง while เป็นคำสั่งกำหนดให้ทำงานวนรอบ
โดยพิจารณาเงื่อนไขก่อน ถ้าค่าที่ได้เป็นจริง จึงเลือกประมวลผลตามนั้น
ตัวอย่างที่ 1
$i = 1;
while($i <= 10){
print $I++;
print <BR>;
}
ตัวอย่างที่ 2
$i = 1;
while($i <= 10):
print $i<br>;
i++;
endwhile;
ทั้งสองตัวอย่างนั้นให้ผลเหมือนกัน
ต่างกันที่รูปแแบการใช้ while
do..while
คำสั่ง do while เป็นคำสั่งกำหนดให้ทำงานวนรอบ
โดยทำก่อน แล้วค่อยพิจารณาเงื่อนไข ถ้าค่าที่ได้เป็นจริง จึงเลือกประมวลผลวนรอบต่อไป
ตัวอย่างที่ 1
$i = 1;
do{
print $i++<BR>;
while($i <= 10);
for
คำสั่ง for เป็นคำสั่งกำหนดให้ทำงานวนรอบ
โดยตั้งค่าก่อน แล้วพิจารณาเงื่อนไข ถ้าค่าที่ได้เป็นจริง
จึงเลือกประมวลผลวนรอบต่อไป
ตัวอย่าง
for($i=0;$i<=10;$i++){
print $i;
print <BR>;
}
ข้อสังเกต ภายใน for(
)
$i = 0; เป็นการกำหนดค่าเริ่มต้น
$i <= 10; เป็นการกำหนดเงื่อนไข
$i++; เป็นการเพิ่มค่าที่ละ
1
break
คำสั่ง break เป็นคำสั่งกำหนดให้หลุดออกจากเงื่อนไขทันที
ตัวอย่าง
$I = 0;
while($i<=50){
if($i==20){break;}
print $i ;
print <BR>;
$i++;
}
สรุป loop while สั่งพิมพ์ 0 ถึง 50 แต่เนื่องจากมีการตรวจสอบว่า I เท่ากับ 20 แล้วออกจากการทำงาน จึงพิมพ์แค่ 19
continue
คำสั่ง continue เป็นคำสั่งควบคุมในการทำงานวนรอบ
โดยกำหนดให้เริ่มรอบใหม่ทันที
ตัวอย่าง
for($i=0;$i<=50;$i++){
if($i==2){continue;}
print $i <BR>;
}
สรุป loop for สั่งพิมพ์ 0 ถึง 50 แต่เนื่องจากมีการตรวจสอบว่า i เท่ากับ 2 แล้วเริ่มใหม่ทันที จึงพิมพ์เฉพาะเลขคู่
switch
คำสั่ง switch เป็นคำสั่งที่ใช้เลือกเงื่อนไขแบบเฉพาะเจาะจง
ซึ่งจะสะดวกกว่าใช้ if
ตัวอย่าง
$I=2;
switch($i){
case 0:
print zero;
break;
case 1:
print one;
break;
case 2:
print two;
break;
default:
print No 0,1 or
}
include
คำสั่ง include เป็นคำสั่งที่ใช้เรียก PHP
ไฟล์อื่นเข้ามาทำงาน
ตัวอย่าง
$fs = array(a.inc, b.inc,
c.inc, d.inc);
for($I=0;$i<count($fs);I++){
include $fs[$I]
}
require
คำสั่ง require เป็นคำสั่งที่ใช้เรียก PHP
ไฟล์อื่นเข้ามาทำงาน แต่ไม่สามารถเรียกภายใต้การทำงานวนรอบได้
ตัวอย่าง
<?
Require (header.inc);
?>
Function
ฟังก์ชั่นนั้นเป็นการสั่งให้กระทำการอย่างใดอย่างหนึ่ง
PHP มีฟังก์ชั่นภายในให้เราได้เรียกง่ายดาย
และเราสามารถสร้างขึ้นมาใช้งานเองได้ด้วย โดยทั่วไปมีด้วยกันอยุ่ 2 แบบ
1. ฟังก์ชั่นที่ไม่มีการส่งค่าระหว่างฟังก์ชั่น
ตัวอย่าง
function sign(){
print http://www.sourcecode.in.th;
print contact : webmaker2k@hotmail.com;
print Thank You
}
sign();
2. ฟังก์ชั่นที่มีการส่งค่าระหว่างฟังก์ชั่น
ตัวอย่าง
function square($a){
return $a * $a;
}
$i = 3;
echo square($i);
|
ชื่อฟังก์ชั่น |
คำอธิบาย -
รายละเอียด |
|
Date |