PHP: PHP Hypertext Preprocessor

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
ภาษา PHP
1. ประเภทข้อมูล
2. การแปลงประเภทข้อมูล
3. ตัวแปรและค่าคงที่
4. Operator
5. การใช้ Operator คำนวณผลรวมของฟอร์ม
6. โครงสร้างควบคุม
 
PHP เบื้องต้น
1. เริ่มต้นด้วย PHP
2. ภาษา PHP
3. การทำงานไฟล์ และไดเรคทอรี
4. การทำงานกับ Array
5. การควบคุมข้อความ และนิพจน์ปกติี่
6. คำสั่งใช้ใหม่และฟังก์ชัน
7. Object Oriented Programming
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP เบื้องต้น > ภาษา PHP

Operator

Operator เป็นสัญลักษณ์ที่สามารถใช้ ควบคุมค่าและตัวแปรโดยการทำงาน เช่น ต้องการใช้ operator นี้ เพื่อประมวลผลรวมและภาษีของใบสั่งซื้อ

โดยทั่วไป  operator สามารถใช้ อากิวเมนต์ 1 ตัวถึง 3 ตัว  แต่ส่วนมากคือ 2 อากิวเมนต์  เช่น operator กำหนดค่าใช้ 2 ตำแหน่ง เก็บค่าอยู่ด้านซ้ายมือของเครื่องหมาย  =  และนิพจน์อยู่ด้านขวา อากิวเมนต์เหล่านี้เรียกว่า  operand

Operator เลขคณิต

operator เลขคณิตมีลักษณะตรงไปตรงมาเหมือน operator คณิตศาสตร์ปกติ และแสดงในตาราง 1.2.1

ตาราง 2.2.1 operator เลขคณิต

Operator ชื่อ ตัวอย่าง

+

การบวก

$a + $b

-

การลบ

$a - $b

*

การคูณ

$a * $b

/

การหาร

$a  /  $b

%

modulus               

$a % $b

operator สามารถเก็บ ผลลัพธ์ของ operation  ตัวอย่างเช่น
$result = $a + $b;

การบวกและลบทำงานได้ตามปกติ  ผลลัพธ์ของ operator เหล่านี้คือ  การเพิ่มหรือการลบ ตามค่าที่เก็บในตัวแปร $a และ $b

modulus ส่งออก เศษจากการหาร $a ด้วยตัวแปร $b
$a = 27;
$b = 10;
$result = $a%$b;

ค่าที่เก็บในตัวแปร $result คือ เศษ เมื่อหาร 27 ด้วย 10 คือ 7

operator เลขคณิตใช้กับ ตัวเลข  ถ้าประยุกต์กับข้อความ  PHP  จะพยายามและแปลงข้อความเป็นตัวเลข  ถ้าตัวแปรเก็บอักษร  "e" หรือ "E" จะได้รับการแปลงเป็น float กรณีอื่นจะได้รับการแปลงเป็น integer โดย  PHP  จะมองหาตัวเลขเริ่มต้นข้อความและใช้เป็นค่า ถ้าไม่ใช่ ค่าของข้อความจะเป็นศูนย์

Operator ข้อความ

Operator ข้อความ มี 1 operator คือ จุด (.) โดยสามารถใช้ operator ต่อข้อความ 2 ข้อความเพื่อสร้างและเก็บผลลัพธ์เหมือนกับการบวกเลข 2 จำนวน
$a = "พูน"
$b = "พนา"
$result = $a.$b

ตัวแปร $result จะเก็บข้อความ "พูนพนา"

Operator กำหนดค่า

เครื่องหมายเท่ากับ (=) เป็น operator กำหนดค่าพื้นฐาน ตามปกติการอ้างอิงในฐานะ operator กำหนดค่า และอ่านฐานะ "การตั้งค่า" ตัวอย่างเช่น
$totalqty = 0;

สามารถอ่านได้เป็น  "$totalqty ตั้งค่าเป็นศูนย์"

การส่งออกค่าจากการกำหนดค่า

การใช้  operator กำหนดค่า ส่งออกค่าทั้งหมดคล้ายกับ operator อื่น ถ้าเขียนว่า
$a + $b;

ค่าของนิพจน์นี้ คือ ผลลัพธ์ของการบวกตัวแปร $a และ $b เหมือนกับการเขียน
$a = 0;

สามารถเขียนคำสั่งในลักษณะนี้
$b = 6 + ($a=5);

$b ได้รับการตั้งค่าเป็น 11 ค่าของประโยคคำสั่งกำหนดค่าทั้งหมด คือ ค่าที่กำหนดให้กับ operand ด้านซ้าย เมื่อทำงานกับค่าของนิพจน์ วงเล็บสามารถใช้เพิ่มนิพจน์ย่อย ซึ่งทำงานเหมือนวิธีการทางเลขคณิต

การผสม Operator กำหนดค่า

นอกจาก การใช้กำหนดค่าอย่างง่าย  มีชุดของการผสม operator กำหนดว่า แต่ละชุด คือ วิธีการย่อของการประมวลผลตัวแปรและกำหนดค่าแล้วส่งกลับไปยังตัวแปรนั้น ตามตาราง 1.2.2

ตาราง  1.2.2 การผสม operator กำหนดค่า

Operator การใช้ เทียบเท่ากับ

+=

$a+=$b

$a=$a + $b

-=

$a-=$b

$a=$a - $b

*=

$a*=$b 

$a=$a * $b

/=

$a/=$b

$a=$a / $b

%=

$a%=$b               

$a=$a % $b

.=

$a.=$b

$a=$a.$b

ตัวอย่าง เช่น
$a +=5;

เทียบเท่ากับการเขียนว่า
$a = $a + 5;

การผสม  operator กำหนดค่า มีอยู่จริงสำหรับ แต่ละ operator  คณิตศาสตร์ และ operator ต่อข้อความ

การเพิ่มและการลด ก่อนและหลัง

operator การเพิ่ม(++) และ การลด(- -) ก่อน และ หลัง คล้ายกับ += และ -= แต่เป็นเครื่องหมายคู่
operator การเพิ่ม ทั้งหมด มี 2 ผลกระทบ  คือ  เพิ่มและกำหนดค่า  เช่น
$ a;
echo ++$a;

บรรทัดที่ 2 ใช้ operator การเพิ่มก่อน เรียกแบบนี้ เพราะ ++ ปรากฎก่อน $a ผลกระทบแรก คือ เพิ่ม $a ด้วย 1 และผลกระทบที่ 2 คือ ส่งออกค่าเพิ่มขึ้น ในกรณีนี้ $a คือ การเพิ่มเป็น 5 แล้ว ส่งออก 5 และพิมพ์ผลลัพธ์ ค่าของนิพจน์ทั้งหมด คือ 5 (ข้อสังเกต ค่าที่เก็บใน $a มีการเปลี่ยนแปลง และไม่ใช่การส่งออกค่าด้วย $a+1)

ถ้า ++ อยู่หลัง $a คือ การใช้ operator การเพิ่มภายหลัง ที่มีผลกระทบแตกต่างกัน เช่น
$a;
echo $a++;

กรณีนี้ ผลกระทบกลับกัน  ผลกระทบแรก ค่าของ $a ได้รับการส่งออกและพิมพ์ ผลกระทบที่ 2 เพิ่มค่าตัวแปร ค่าของนิพจน์ทั้งหมด คือ 4 นี่เป็นค่าที่ได้รับการส่งออก อย่างไรก็ตาม ค่าของ $a หลังจากประโยคคำสั่งได้รับการประมวลผล คือ 5
ลักษณะของ - - ทำงานได้ในแบบเดียวกัน เพียงแต่ว่าค่าของ $a ลดลง แทนที่การเพิ่ม

Operator เปรียบเทียบ

Operator เปรียบเทียบใช้เปรียบเทียบ 2 ค่า นิพจน์ใช้ operator เหล่านี้ส่งออกค่าทางตรรกะเป็น TRUE หรือ FALSE ขึ้นกับผลลัพธ์ของการเปรียบเทียบ

Operator เท่ากับ

operator เท่ากับ  (==) ใช้ในการทดสอบ ค่าเท่ากันของ 2 ค่า  เช่น
$a == $b;

ทดสอบค่าที่เก็บอยู่ใน $a และ $b เหมือนกันการส่งออกผลลัพธ์โดยนิพจน์นี้จะเป็น TRUE ถ้าค่าเท่ากัน หรือ FALSE ถ้าไม่เท่ากัน สิ่งนี้ทำให้สับสนกับ = (operator กำหนดค่า) โดยการทำงานไม่มีความผิดพลาด แต่จะไม่ให้ผลลัพธ์ความต้องการ โดยทั่วไป ค่าไม่ใช่ศูนย์ ได้รับการประเมินเป็น TRUE และ ศูนย์ ได้รับการประเมินเป็น FALSE ตัวอย่าง
$a = 5;
$b = 7;

ถ้าทดสอบ $a = $b ผลลัพธ์ คือ TRUE เนื่องจาก ค่าของ $a = $b คือ การกำหนดค่าให้กับซ้ายมือ ในกรณีนี้ คือ 7 ค่านี้ไม่ใช่ศูนย์ ดังนั้นจึงได้รับการประเมินเป็น TRUE ถ้าตั้งใจทดสอบด้วย $a = = $b ซึ่งได้ค่าเป็น FALSE

ทำให้ต้องตรวจสอบความผิดพลาดทางตรรกะที่ทำได้ยาก ดังนั้นควรมีการตรวจสอบการใช้ 2 operator นี้

Operator เปรียบเทียบอื่น

PHP สนับสนุน operator เปรียบเทียบหลายตัว ตามที่ได้สรุป operator เปรียบเทียบในตาราง 1.2.3

ตาราง  1.2.3 Operator เปรียบเทียบ

Operator ชื่อ การใช้

==

เท่ากับ

$a == $b

===

เอกลักษณ์

$a === $b

!=

ไม่เท่ากับ               

$a!=$b

<>

ไม่เท่ากับ               

$a<>$b

<

น้อยกว่า

$a<$b

>

มากกว่า

$a>$b

<=

น้อยกว่าหรือเท่ากับ

$a<=$b

>=

มากกว่าหรือเท่ากับ

$a>=$b

หมายเหตุ    operator เอกลักษณ์ (===) จะส่งออก TRUE ถ้า 2 operator เท่ากันและเป็นประเภทข้อมูลเดียวกัน

Operator ตรรกะ

operator ตรรกะ  ใช้รวม  ผลลัพธ์ของเงื่อนไขทางตรรกะ  ตัวอย่าง เช่น  มีความสนใจ ค่าของตัวแปร $a ระหว่าง 0 ถึง 100 ต้องทดสอบเงื่อนไข $a>=0 และ $a<=0 ด้วยการใช้ AND
$a>=0 && <=100

PHP สนับสนุน AND, OR, XOR (ไม่รวม OR) และ NOT โดยชุดของ operator ตรรกะ ได้สรุปในตาราง 1.2.4

ตาราง  1.2.4 Operator ตรรกะ

Operator ชื่อ การใช้ ผลลัพธ์

!

NOT

!$b

ส่งออก TRUE ถ้า $b เป็น FALSE

&&

AND

$a && $b

ส่งออก TRUE ถ้า $a และ $b เป็น TRUE
กรณีอื่น FALSE

||

OR

$a || $b

ส่งออก TRUE ถ้า $a หรือ $b หรือทั้งคู่เป็น TRUE
กรณีอื่น FALSE

and

AND

$a and $b

เหมือนกับ && แต่มีระดับต่ำกว่า

or

OR

$a or $b

เหมือนกับ // แต่มีระดับต่ำกว่า

หมายเหตุ    and และ or มีระดับต่ำกว่า && และ ||

Bitwise Operator

Bitwise Operator ทำให้สามารถปฏิบัติกับเลขจำนวนเต็ม เป็นชุดของบิตที่นำเสนอ บางครั้งอาจจะพบการใช้ operator เหล่านี้ไม่มากใน PHP แต่ได้สรุป bitwise operator ในตาราง 1.2.5

ตาราง 1.2.5 bitwise operator             

Operator ชื่อ การใช้ ผลลัพธ์

&

bitwise AND

$a & $b

ชุดบิตใน $a และ $b เป็นชุดในผลลัพธ์

/

bitwise OR

$a / $b

ชุดบิตใน $a หรือ $b เป็นชุดในผลลัพธ์

“

bitwise NOT

“ $a

ชุดบิตใน $a ไม่เป็นชุดในผลลัพธ์

^

bitwise XOR

$a^$b   

ชุดบิตใน $a หรือ $b แต่ไม่ใช่ทั้งคู่เป็นชุดในผลลัพธ์

<<

เลื่อนไปทางซ้าย

$a<<$b

เลื่อน $a ไปทางซ้ายของบิต $b

>>

เลื่อนไปทางขวา

$a>>$b

เลื่อน $b ไปทางขวาของบิต $b

Operator อื่น

นอกจากนี้  operator  อื่นที่มีการใช้งาน ได้แก่

  • จุลภาค (,) ใช้แบ่งอากิวเมนต์ ของฟังก์ชัน และรายงานหน่วยข้อมูล
  • Operator พิเศษ new และ  ->   ใช้ instance กับ class และ เข้าถึงสมาชิกของ class
  • Array operator ([ ]) สามารถใช้เข้าถึง array

มี  operator อีก 3 ตัว ที่จะกล่าวถึงต่อไป

Ternary Operator

?  เป็น Operator ทำงานด้วยวิธีเดียวกับการทำงานในภาษา C มีรูปแบบ คือ
condition? value if TRUE : value if FALSE

Ternary operator เหมือนกับ นิพจน์ในประโยคคำสั่ง if else ตัวอย่าง
($grade > 50? "Passed": "Failed")

นิพจน์นี้ประเมินเกรดนักศึกษาเป็น  "Passed" หรือ "Failed"

Error Suppression Operator

Error suppression operator (@) สามารถใช้หน้านิพจน์ที่สร้างหรือมีค่า เช่น
$ = @(57/0)

ถ้าปราศจาก @ บรรทัดนี้จะสร้างคำเตือน หารด้วยศูนย์แต่ด้วย operator นี้ ข้อผิดพลาดจะถูกปิดบัง

Execution Operator

execution operator เป็นคู่ของ operator  คือ คู่ของ backtick (‘ ‘)  โดย backtick ไม่ใช่ single quote ตามปกติอยู่ที่แป้นพิมพ์  เดียวกับสัญลักษณ์  ~ (tilde)

PHP จะพยายามประมวลผลสิ่งที่อยู่ระหว่าง backtick เหมือนคำสั่งในประโยคคำสั่ง ค่าของนิพจน์ เป็นผลลัพธ์ของคำสั่ง
ตัวอย่างเช่น  ระบบปฏิบัติการ  UNIX
$out  =  ‘ls – la‘;
echo   "<pre>".$out. "</pre>";

หรือ เท่ากับ ระบบปฎิบัติการ  Windows
$out = ‘dir C:‘;
echo "<pre>".$out. "</pre>";

เวอร์ชันเหล่านี้จะเก็บรายงานไดเรคทอรีและเก็บใน $out จากนั้นส่งให้ browser หรือติดต่อในวิธีอื่น

ลำดับการทำงานของ Operator

ในทางปฏิบัติมักจะมีนิพจน์ที่ประกอบด้วยหลาย operator ตามปกตินิพจน์ในการการประเมินนิพจน์ในวงเล็บเป็นหน่วยเดียวก่อน จากนั้นจึงย้ายออกมาประเมินภายนอก ตัวอย่าง
($a + $b) * $c

การคำนวณจะบวก $a กับ $b แล้วคูณผลบวกด้วย $c

นอกจากนี้ operator มีลำดับความสำคัญในการประเมินต่างกัน โดยโปรแกรมจะประเมินก่อนหรือหลังตามลำดับความสำคัญของ operator และวิธีการประเมินของแต่ละ operator ต่างกันคือ จากขวาไปซ้าย (ขวา), จากซ้ายไปขวา (ซ้าย) หรือไม่เกี่ยวข้อง (n/a)
ตาราง 1.2.6 แสดงลำดับความสำคัญจากมากไปน้อย ในระดับเดียวกันลำดับความสำคัญจากซ้ายไปขวา

ตาราง 1.2.6 ลำดับความสำคัญของ operator

วิธีการประเมิน Operator

n/a

new

ขวา

[ (สำหรับ array)

ขวา

! ~ ++ -- @ (int) (float) (string) (array) (object)

ซ้าย

* / %

ซ้าย

+ - .

ซ้าย

<<  >>

n/a

< <= = > >=

n/a

== != <> === !==

ซ้าย

&

ซ้าย

^

ซ้าย

|

ซ้าย

&&

ซ้าย

||

ซ้าย

?:

ขวา

= += -= *= /= .= %= &= |= ^= <<= >>=

ขวา

Print

ซ้าย

And

ซ้าย

Xor

ซ้าย

Or

ซ้าย

,

ตัวอย่าง จากตารางบอกว่า
$a || $b + $c * $d and $e

เทียบเท่ากับ
$a || (($b + ($c * $d)) and $e))


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak