Coding Gun

Operator คืออะไร? และการใช้ใน PHP

Operator คือตัวกระทำการ โดยที่ Operator จะนำเอา Operand มากระทำบางอย่างเช่น

a + b

เราจะเรียก a และ b ว่าเป็น Operand

เราจะเรียกเครื่องหมาย + ว่าเป็น Operator

ดังนั้นจาก a + b เราจะแยกออกเป็น a(Operand) มาบวก(Operator)กับ b(Operand)

Operator เป็นสิ่งที่ต้องรู้จักและทำความเข้าใจให้ดีเพราะมีผลต่อการทำงานของ Application เรามากๆ bug หรือ defect ส่วนใหญ่ก็เกิดจากความไม่เข้าใจใน Operator นี่แหละ ซึ่งใน PHP จะแบ่ง Operator ออกเป็นกลุ่มๆ ดังนี้

Arithmetic operators

กลุ่มนี้เป็นกลุ่มของการคำนวน ใช้กับตัวเลข

Example
Name Result
-$a Negation ค่าตรงข้ามของ $a
ถ้า $a เป็น + ค่าที่ได้จะกลายเป็น -
ถ้า $a เป็น - ค่าที่ได้จะกลายเป็น +
$a + $b Addition ผลบวกของ $a และ $b
$a - $b Subtraction ผลลบของ $a และ $b
$a * $b Multiplication ลคูณของ $a และ $b
$a / $b Division ผลหารของ $a และ $b
$a % $b Modulus ผลที่ได้จะเป็น “เศษ” ที่ได้จากการหารของ $a และ $b
$a ** $b Exponentiation ผลที่ได้จะเป็น $a ยกกำลัง $b

Assignment operators

เป็นกลุ่มของการกำหนดค่าให้กับตัวแปร ใช้กับตัวเลขเท่านั้น

กำหนดค่า เหมือนกับ รายละเอียด
$x = $y $x = $y กำหนดค่าของตัวแปรด้านขวาให้กับตัวแปรด้านซ้าย
$x += $y $x = $x + $y เพิ่มค่าไปอีก $y จากค่าที่ $x มีอยู่
$x -= $y $x = $x - $y ลดค่าลงไป $y จากที่ $x มีอยู่
$x *= $y $x = $x * $y $x เท่ากับ $x คูณ $y
$x /= $y $x = $x / $y $x เท่ากับ $x หาร $y
$x %= $y $x = $x % $y $x เทากับ เศษที่ได้จากการนำ $x ไปหารด้วย $y

Comparison operators

กลุ่มของการเปรียบเทียบ ผลลัพธ์จาก Operator กลุ่มนี้จะเป็น TRUE หรือ FALSE

Example Result
$a == $b TRUE ถ้า $a< มีค่าเทียบเท่ากับ $b< ไม่จำเป็นต้องมี Data Type เดียวกัน เช่น 0 มีค่าเทียบเท่ากับ False
$a === $b TRUE ถ้า $a< มีค่าเท่ากับ $bและมี Data Type ชนิดเดียวกัน
$a != $b TRUE ถ้า $a< ไม่เท่ากับ $b< หลังจากที่ PHP พยายามแปลงค่า
ดังนั้นจึงได้ว่า $a ไม่เทียบเท่ากับ $b
$a <> $b TRUE ถ้า $a< ไม่เทียบเท่ากับ $b< เหมือนกับ "!="
$a !== $b TRUE ถ้าค่าของ $a< ไม่เท่ากับ $b<
หรือมี Data Type ไม่เหมือนกัน
$a < $b TRUE ถ้า $a< มีค่าน้อยกว่า $b<
$a > $b TRUE ถ้า $a< มีค่ามากกว่า $b
$a <= $b TRUE ถ้า $a มีค่าน้อยกว่าหรือเท่ากับ $b
$a >= $b TRUE ถ้า $a มีค่ามากกว่าหรือเท่ากับ $b

Increment/Decrement operators

กลุ่มนี้เป็นกลุ่มของการเพิ่มค่า และการลดค่าของตัวแปร

Example Effect
++$a เพิ่มค่า $a อีก 1 ก่อนจะที่จะทำการ return ค่า
$a++ return ค่า $aก่อนแล้วถึงจะทำการเพิ่มค่าทีหลัง
--$a ลดค่าของ $a ลง 1 แล้วค่อยทำการ return ค่า
$a-- return ค่า $aก่อนแล้วค่อยทำการลดค่าของ $aลง 1

การใช้งานเครื่องหมาย ++ และ – อย่างง่ายๆคือ ถ้าเราไม่ทำการ return ค่าของตัวแปรออกไปก็จะไม่ต้องกังวลกับเครื่องหมาย ++ หรือ –

เราควรจะใช้ $x++; อย่างเดียว อย่าพยายามใช้ echo $x++;

Logical operators

เป็นกลุ่มของการเชื่อมเงื่อนไขต่างๆ เข้าด้วยกัน

Example Name Result
$a and $b And TRUE ถ้าค่าของ $a และ $b เป็นจริง
$a or $b Or TRUE ถ้าค่าของ $a หรือ $b เป็นจริง
$a xor $b Xor TRUE ถ้าค่าของ $a และ $b ต่างกัน
ถ้าตัวใดตัวหนึ่งเป็น TRUE อีกตัวต้องเป็น FALSE
! $a Not TRUE ถ้า $a เป็น FALSE.
$a && $b And TRUE ถ้าค่าของ $a และ $b เป็นจริง เหมือนกับ "and"
$a || $b Or TRUE ถ้าค่าของ $a หรือ $b เป็นจริง เหมือนกับ "or"

String operators

กลุ่มของ operators ที่ทำงานกับข้อความ

Example Name Result
$a . $b Concatenation เชื่อมข้อความ $a และ $bเข้าด้วยกัน
$a .= $b Concatenation assignment เชื่อมข้อความ $b ต่อท้าย $a

Array operators

กลุ่มของ operators ที่ทำงานกับ array

Example Name Result
$a + $b Union นำเอา Array $a และ $b มา Union กัน
$a == $b Equality TRUE ถ้า $a และ $b มีค่าใน Array เหมือนกัน เทียบทั้ง Key และ Value
(ไม่จำเป็นต้องเรียงลำดับ)
$a === $b Identity TRUE ถ้า $a และ $b เป็นตัวแปรชนิดเดียวกัน รวมทั้งมีค่า key และ value ตรงกัน (ตามลำดับ)
$a != $b Inequality TRUE ถ้า $a ไม่เท่ากับ Array $b
$a <> $b Inequality TRUE ถ้า $a< ไม่เท่ากับ Array $b< เหมือนกับ "!="
$a !== $b Non-identity TRUE ถ้า $a< ไม่เท่ากับ Array $b<
ตรงข้ามกับ "==="
Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security