องค์ประกอบของภาษา 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”, “123”

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

เป็นการสั่งให้ PHP ประมวลผลทางคณิตศาสตร์

ตัวดำเนินการทางคณิตศาสตร์ 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