calculator-simpleOperators

ธานินทร์ ธนูนิล 630710038

Operators หรือจะเรียกว่า ตัวดำเนินการ เป็นหนึ่งใน Data Types ที่ใช้ในการดำเนินการต่างๆ เช่น การคำนวณ การเปรียบเทียบ ฯลฯ

ตัวอย่างเช่น ถ้า "4 + 5" เท่ากับ 9 ฉะนั้นแล้ว "4" กับ "5" จะเรียกว่า Operands(ตัวถูกดำเนินการ) แล้ว "+" จะเรียกว่า Operator(ตัวดำเนินการ)

ประเภทของ Operators ต่างๆในภาษา PHP

1. Arithmetic Operators

คือ ตัวดำเนินการทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร ฯลฯ ใช้เพื่อคำนวณคณิตศาสตร์ทั่วไป

ตัวอย่าง :

Operators
Name
Example
Result

+

Addition

$x + $y

ผลรวมของ Operands

-

Subtraction

$x - $y

ผลต่างของ Operands

*

Multiplication

$x * $y

ผลคูณของ Operands

/

Division

$x / $y

ผลหารของ Operands

%

Modulo

$x % $y

เศษของ $a หาร $b.

**

Exponentiation

$x ** $y

$x ยกกำลัง $y

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

<?php
// Define two numbers
$x = 10;
$y = 3;

// Addition
echo "Addition: " . ($x + $y) . "\n";

// Subtraction
echo "Subtraction: " . ($x - $y) . "\n";

// Multiplication
echo "Multiplication: " . ($x * $y) . "\n";

// Division
echo "Division: " . ($x / $y) . "\n";

// Exponentiation
echo "Exponentiation: " . ($x ** $y) . "\n";

// Modulus
echo "Modulus: " . ($x % $y) . "\n";
?>

Output

ถ้าสังเกตุดีๆ จะเห็นว่าภาษา PHP และ python การยกกำลังนั้นจะใช้ ** แต่ภาษา Java กับภาษา C นั้นจะไม่รองรับการใช้แบบนี้ ต้องใช้ Math.pow() ใน Java หรือ pow() ใน C เพื่อทำการยกกำลัง

2. Assignment Operators

คือ ตัวดำเนินการที่ทำหน้าที่กำหนดค่าตัวแปรหรือค่าคงที่ โดยปกติแล้วจะมีเครื่องหมาย " = " ในการดำเนินการพื้นฐาน

ตัวอย่าง :

Operators
Name
Example
Result

=

Assign

$a = $b

กำหนดให้ค่า $a เท่ากับค่า $b

+=

Add then Assign

$a += $b

ผลบวกเหมือนกับ $a = $a + $b

-=

Subtract then Assign

$a -= $b

ผลลบเหมือนกับ $a = $a - $b

*=

Multiply then Assign

$a *= $b

ผลคูณเหมือนกับ $a = $a * $b

/=

Divide then Assign (quotient)

$a /= $b

ผลหารเหมือนกับ $a = $a / $b

%=

Divide then Assign (remainder)

$a %= $b

หาเศษที่เหลือโดย $a = $a % $b

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

จะเห็นว่า ตัวดำเนินการ Assignment Operators ของทั้ง 4 ภาษานั้นไม่ได้แตกต่างกันเท่าไหร่เลย หรือก็คือ ใช้เหมือนกัน ฉะนั้นจำได้ง่ายเลย ไม่ต้องปวดหัว >_<

3. Comparison Operators

คือ ตัวดำเนินการที่ทำหน้าที่เปรียบเทียบค่าระหว่างสองค่า ไม่ว่าตัวแปรจะเป็นสตริงหรือค่าคงที่ โดยจะให้ผลลัพธ์เป็น Boolean คือ true หรือ false

ตัวอย่าง :

Operator
Name
Example
Result

==

Equal

$x == $y

คืนค่า true ถ้า $x เท่ากับ $y

===

Identical

$x === $y

คืนค่า true ถ้า $x เท่ากับ $y และเป็น type เดียวกัน

!=

Not equal

$x != $y

คืนค่า true ถ้า $x ไม่เท่ากับ $y

<>

Not equal

$x <> $y

คืนค่า true ถ้า $x ไม่เท่ากับ $y

!==

Not identical

$x !== $y

คืนค่า true ถ้า $x ไม่เท่ากับ $y หรือไม่ใช่ type เดียวกัน

>

Greater than

$x > $y

คืนค่า true ถ้า $x มากกว่า $y

<

Less than

$x < $y

คืนค่า true ถ้า $x น้อยกว่า $y

>=

Greater than or equal to

$x >= $y

คืนค่า true ถ้า $x มากกว่าหรือเท่ากับ $y

<=

Less than or equal to

$x <= $y

คืนค่า true ถ้า $x น้อยกว่าหรือเท่ากับ $y

<=>

Spaceship

$x <=> $y

คืนค่า -1 ถ่า $x น้อยกว่า $y

คืนค่า 0 ถ่า $x เท่ากับ $y

คืนค่า 1 ถ่า$x มากกว่า $y

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

เมื่อเราสังเกตุจะเห็นว่าภาษา PHP เป็นภาษาเดียวที่มีการใช้ <>, === และ !== โดยภาษาอื่นๆจะใช้ != เป็นการเปรียบเทียบ และการตรวจสอบตัวแปร เช่น Java จะใช้ instanceof ฯลฯ เป็นต้น

4. Increment/Decrement operators

คือ ตัวดำเนินการที่ทำหน้าที่ เพิ่มหรือลดค่าตัวเลข ขึ้นอยู่กับว่าจะอยู่ตำแหน่งก่อนหรือหลังตัวเลข

ตัวอย่าง :

Operator
Name
Example
Effect

++

Pre-Increment

++$x

เพิ่มค่า $x ไป 1 จากนั้นคืนค่า $x

--

Pre-Decrement

--$x

ลดค่า $x ไป 1 จากนั้นคืนค่า $x

++

Post-Increment

$x++

คืนค่า $x จากนั้นเพิ่มค่า $x ไป 1

--

Post-Decrement

$x--

คืนค่า $x จากนั้นลดค่า $x ไป 1

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

จะเห็นได้ว่า ทุกภาษานั้นจะมีการใช้ Prefix และ Postfix นั้นคือ ++ และ -- ยกเว้น Python จะใช้แค่ += กับ -= ในการเพิ่มลดค่า ทำให้ต้องเพิ่มค่าให้ตัวแปรก่อนเสมอก่อนจะส่งผลลัพธ์ออกมา

5. Logical or Relational Operators

คือตัวดำเนินการแบบ เชิงตรรกะ จะใช้กับคำสั่งที่มีเงื่อนไขหรือเปรียบเทียบค่าระหว่างตัวแปร โดยผลลัพธ์ก็จะเป็นแบบ Boolean เช่นกัน คือ true หรือ false

ตัวอย่าง :

Operator
Name
Example
Result

and

And

$x and $y

true ถ้าทั้ง $x และ $y เป็นจริง

or

Or

$x or $y

true ถ้า $x หรือ $y เป็นจริง

xor

Xor

$x xor $y

true ถ้า $x หรือ $y เป็นจริง แต่ต้องไม่ true ทั้งคู่

&&

And

$x && $y

true ถ้าทั้ง $x และ $y เป็นจริง

||

Or

$x || $y

true ถ้า $x หรือ $y เป็นจริง

!

Not

!$x

true ถ้า x ไม่เป็นจริง

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

เห็นได้เลยว่า Python จะไม่เครื่องหมาย Xor โดยจะใช้ != แทน และจะมีภาษา C กับ Java เท่านั้นที่ใช้ ^ เป็นเครื่องหมาย Xor นอกจากนั้นก็ไม่มีอะไรแตกต่างกันมาก

6. String operators

คือ ตัวดำเนินการที่ทำหน้าที่เกี่ยวกับ String หรือใช้ร่วมกับข้อความ มีเพียงสองตัวที่ใช้

ตัวอย่าง :

Operator
Name
Example
Result

.

Concatenation

$txt1 . $txt2

ต่อตัวแปร $txt1 กับ $txt2 เข้าด้วยกัน

.=

Concatenation assignment

$txt1 .= $txt2

ต่อตัวแปร $txt2 รวมให้กับ $txt1 ในตัวแปรเดียว

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

การต่อสตริงทั้ง 4 ภาษานี้ค่อนข้างแตกต่างกันเล็กน้อย โดยภาษา Java และ Python จะใช้การต่อสตริงด้วย + และ += ขณะเดียวกันภาษา C จะใช้ strcat() ในการต่อสตริง แต่ก็สามารถใช้ += ได้เช่นกัน สรุปคือ ต่างกันกับ PHP ตรง เครื่องหมาย . มีแค่ใน PHP

7. Array operators

คือตัวดำเนินการที่ทำงานเกี่ยวกับอาเรย์ พวกนี้มักจะใช้ในอาเรย์และเห็นได้ว่าตัวไหนทำงานในอาเรย์

ตัวอย่าง :

Operator
Name
Example
Result

+

Union

$x + $y

Union ของ $x และ $y

==

Equality

$x == $y

คืนค่า true ถ้า $x และ $y มีคีย์หรือค่าเหมือนกัน

===

Identity

$x === $y

คืนค่า true ถ้า $x และ $y มีคีย์หรือค่าเหมือนกันในลำดับเดียวกันและประเภทเดียวกัน

!=

Inequality

$x != $y

คืนค่า true $x และ $y ไม่เท่ากัน

<>

Inequality

$x <> $y

คืนค่า true $x และ $y ไม่เท่ากัน

!==

Non-identity

$x !== $y

คืนค่า true $x และ $y ไม่เหมือนกัน

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

โค๊ดทั้ง 4 ภาษานี้มีการเรียกใช้งาน operator แตกกต่างกันอย่างชัดเจน โดยอย่างแรกเลย Java จะใช้ HashMap ในการเก็บคีย์-ค่า ใช้การรวมอาเรย์ด้วย putAll() และใช้การเปรียบเทียบด้วย equals() ต่อมาภาษา C จะมีการใช้ struct และอาศัยฟังก์ชันในการเปรียบเทียบ เนื่องจากภาษา C ไม่มีโครงสร้างข้อมูลเชิงคีย์ สุดท้ายภาษา Python จะใช้ dict ในการรวมจะใช้ **x กับ **y และการเปรียบเทียบจะใช้ == และ !=

8. Conditional or Ternary Operators

คือ ตัวดำเนินการแบบมีเงื่อนไข ใช้เพื่อทำการกำหนดเงื่อนไข มักจะใช้อยู่ในคำสั้ง if - else

ตัวอย่าง :

Operator
Name
Example
Result

?:

Ternary

$x = expr1 ? expr2 : expr3

คืนค่า $x

ค่าของ $x จะเป็น expr2 ถ้า expr1 เป็น true ไม่งั้นจะเป็น expr3 ถ้า expr1 เป็น false

??

Null coalescing

$x = expr1 ?? expr2

คืนค่า $x

ค่าของ $x จะเป็น expr1 ถ้า expr1 เป็นจริง และไม่เป็น Null

ถ้า expr1 ไม่เป็นจริง หรือเป็น Null ค่าของ $x จะเป็น expr2

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

ในภาษา C นั้นจะไม่มี Null Operator จะใช่ if-else ในการตรวจแทน ส่วน Java มีแต่ ?: ไม่มี Null Operator ต้องใช้ != null ในการตรวจสอบ ส่วน Python จะใช้ or ในการตรวจสอบ null

9. Bitwise Operators

คือตัวดำเนินการที่ทำงานในระดับบิต ของตัวเลขจำนวนเต็ม มีความแตกต่างกันกับ Logical Operators มักใช้เกี่ยวกับการจัดการที่เกี่ยวของกับบิต เช่น การปรับเปลี่ยนค่าในหน่วยความจำ

ตัวอย่าง :

Operator
Name
Example
Result

&

And

$a = 6; $b = 3; echo $a & $b;

AND บิตต่อบิต (ทั้งสองบิตต้องเป็น 1)

|

Or (inclusive or)

OR บิตต่อบิต (บิตใดบิตหนึ่งเป็น 1)

OR บิตต่อบิต (บิตใดบิตหนึ่ง บิตต้องเป็น 1)

^

Xor (exclusive or)

$a = 6; $b = 3;

echo $a ^ $b;

บิตต่อบิต (บิตต่างกันให้ 1)

~

Not

$a = 6;

echo ~ $a;

NOT บิต (กลับบิตทั้งหมด)

<<

Shift left

$a = 3;

echo $a << 1

เลื่อนบิตไปทางซ้าย (เติม 0)

>>

Shift right

$a = 6;

echo $a >> 1;

เลื่อนบิตไปทางขวา (ทิ้งบิตด้านขวา)

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

จะเห็นได้ว่า ทั้ง 4 ภาษานั้นไม่ได้แตกต่างกันเลย ฉะนั้นจึงสรุปได้ว่า Bitwise Operators ทั้ง 4 ภาษานั้นใช้เหมือนกัน เป็นมาตรฐานของการจัดการหน่วยความจำ

10. Type Operators

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

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

จากโค๊ดจะเห็นว่าภาษา Java และ Python จะมี instanceof เหมือนกัน โดย Python จะใช้ isinstance() ส่วนภาษา C นั้นจะไม่มี instanceof แต่ใช่โครงสร้างจำลอง OOP แทน

11. Execution Operators

คือตัวดำเนินการที่เรียกใช้งานคำสั่งของระบบปปฏิบัติการ(ใม่ใช่ single-quotes) จะเหมือนกับ shell_exec().

ตัวอย่าง :

Operator
Name
Example
Result

` `

backticks

echo dir;

ดำเนินการ shell command และส่งผลลัพธ์

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

จะเห็นได้จากโค๊ดสั้นๆนี้ว่าแต่ละภาษาเรียกใช้งานแตกต่างกัน โดนภาษา Java จะใช้ Runtime.getRuntime().exec() ภาษา C จะใช้ system() ส่วน Python จะใช้ os.popon()

12. Error Control Operators

คือตัวดำเนินที่จะทำหน้าที่ปิดบังการแสดงข้อความแจ้งเตือน หรือข้อผิดพลาด ของคำสั่งหรือฟังก์ชัน

ตัวอย่าง :

Operator
Name
Example
Result

@

at

@file ('non_existent_file')

ปิดบังไฟล์ที่ผิดพลาด

ตัวอย่างโค๊ดเปรียบเทียบภาษา PHP, Java, C และ Python :

Output

เห็นได้ว่า ภาษา Python จะใช้ @ เหมือนกัน แต่ต่างตรงที่ใช้ try-catch และ try-except เช่นเดียวกับ Java ส่วน C นั้นจะไม่มี เลยใช้การตรวจสอบด้วยฟังก์ชันแทน

PHP Operators Precedence(ลำดับความสำคัญ)

คือ การจัดลำดับการทำงานของตัวดำเนินการ โดยตัวดำเนินการที่มีลำดับความสำคัญมากที่สุดจะทำงานก่อนตัวดำเนินการที่มีลำดับความสำคัญน้อย นี่คือตารางที่ตัวข้างบนจะมีความสำคัญมากกว่าเรียงลงไปข้างล่าง

ตัวอย่าง :

Associativity
Operators
Additional Information

(n/a)

clone new

clone and new

right

**

arithmetic

(n/a)

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

arithmetic (unary + and -), increment/decrement, bitwise, type casting and error control

left

instanceof

type

(n/a)

!

logical

left

* / %

arithmetic

left

* - .

arithmetic (binary + and -), array and string (. prior to PHP 8.0.0)

left

<< >>

bitwise

left

.

string (as of PHP 8.0.0)

non-associative

<<= >>=

comparison

non-associative

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

comparison

left

&

bitwise and references

left

^

bitwise

left

|

bitwise

left

&&

logical

left

||

logical

right

??

null coalescing

non-associative

?:

ternary (left-associative prior to PHP 8.0.0)

right

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

assignment

(n/a)

yield from

yield from

(n/a)

yield

yield

(n/a)

print

print

left

and

logical

left

xor

logical

left

or

logical

Video :

Presentation :

file-download
1MB

Reference :

PHP Operators. (n.d.). In W3school.

https://www.w3schools.com/php/php_operators.asparrow-up-right

Language Reference Operators. (n.d.) In php.

https://www.php.net/manual/en/language.operators.phparrow-up-right

PHP Operator. (2024, June 5). In geeksforgeeks.

https://www.geeksforgeeks.org/php-operators/?ref=header_outindarrow-up-right

PHP Operator. (n.d.). In javatpoint.

https://www.javatpoint.com/php-operators#Typearrow-up-right

PHP - Operators Types. (n.d.). Intutorialspoint.

https://www.tutorialspoint.com/php/php_operator_types.htmarrow-up-right

Exploring PHP Operators. (n.d.). mrExamples.

https://mrexamples.com/php/php-operators/arrow-up-right

Last updated