2.7 นิพจน์และตัวดำเนินการ
2.7.1 นิพจน์ (Expression)
นิพจน์ในภาษาพีเอชพี คือรูปแบบการเขียนคำสั่งระหว่างตัวดำเนินการ (Operator) และ ตัวถูกกระทำ (Operand) เช่น การกำหนดค่าให้กับตัวแปร สามารถเขียนนิพจน์ได้ดังนี้
x = 2 + 3 ; เป็นการเขียนนิพจน์ 2 + 3 ซึ่งมีเครื่องหมาย + เป็นตัวดำเนินการและ
ตัวถูกกระทำคือตัวเลข 2 และ 3 จากผลการคำนวณได้ผลลัพธ์เท่ากับ 5 ซึ่งถูกกำหนดค่าให้กับตัวแปร x
ดังนั้นนิพจน์จะต้องใช้ตัวดำเนินการต่าง ๆ เพื่อคำนวณหาผลลัพธ์ และสร้างเงื่อนไขต่าง ๆ ในการเขียนโปรแกรม
2.7.2 ตัวดำเนินการ (Operator)
ตัวดำเนินการ คือเครื่องหมายหรือสัญลักษณ์ที่กำหนดขึ้นสำหรับใช้ในการจัดการกับตัวแปรและค่าคงที่ หรือสร้างนิพจน์ (Expression) ขึ้นและนำไปใช้งานในการเขียนโปรแกรม สำหรับตัวดำเนินการในภาษาพีเอชพี มีตัวดำเนินการดังต่อไปนี้
2.7.2.1 ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic operators)
เป็นการนำค่า 2 ค่า มากระทำกันโดยใช้โอเปอเรเตอร์หรือตัวดำเนินการทางคณิตศาสตร์ เช่น บวก ลบ คูณ หรือ หาร ตัวดำเนินการทางคณิตศาสตร์ที่ใช้มีดังตารางที่ 2.3
ตารางที่ 2.3 แสดงตัวดำเนินการทางคณิตศาสตร์ (Arithmetic operators)
ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
+ | บวก | $a + $b |
- | ลบ | $a - $b |
* | คูณ | $a * $b |
/ | หาร | $a / $b |
% | หารเอาเฉพาะเศษ | $a % $b (Modulus) |
ตัวดำเนินการทางคณิตศาสตร์ ใช้ได้เฉพาะตัวแปรที่มีชนิดข้อมูลแบบจำนวนเต็มและจำนวนทศนิยมเท่านั้น ดังตัวอย่างเช่น ตัวดำเนินการเครื่องหมาย / จะให้ผลลัพธ์เป็นชนิดข้อมูลจำนวนทศนิยม ก็ต่อเมื่อตัวถูกกระทำตัวใดตัวหนึ่งเป็นชนิดข้อมูลจำนวนทศนิยม ดังตัวอย่างเช่น 20 / 3.0 มีค่าเท่ากับ 6.66667 ถ้าตัวถูกกระทำเป็นจำนวนเต็มทั้งหมดจะให้ผลลัพธ์เป็นจำนวนเต็ม ดังตัวอย่างเช่น 20 / 3 ซึ่งผลลัพธ์มีค่าเท่ากับ 6 ตัวดำเนินการเครื่องหมาย % จะให้ผลลัพธ์เป็นตัวเลขเศษซึ่งเกิดจากการหารของตัวเลข 2 จำนวน ดังตัวอย่างเช่น
20 % 3 จะได้เศษของการหารเท่ากับ 2
51.5 % 2 จะได้เศษของการหารเท่ากับ 1.5
ตัวอย่างต่อไปนี้เป็นการกำหนดค่า โดยมีตัวดำเนินการอยู่ในนิพจน์คำสั่ง
ตัวอย่างโปรแกรมที่ 2.9 โปรแกรมแสดงตัวดำเนินการทางคณิตศาสตร์ในโปรแกรมภาษาพีเอชพี
เขียนคำสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง แล้วบันทึกไฟล์ชื่อ test_arithmetic.php
Source Code:
ผลลัพธ์โปรแกรม:
อธิบายโปรแกรม:
บรรทัดที่ 1 เปิดแท็กภาษา PHP
บรรทัดที่ 2 ประกาศตัวแปร number1 โดยกำหดนค่าให้ number1 เท่ากับ 150
บรรทัดที่ 3 ประกาศตัวแปร number2 โดยกำหดนค่าให้ number2 เท่ากับ 10
บรรทัดที่ 4 ประกาศตัวแปร add เก็บค่าการดำเนินการบวกค่าในตัวแปร number1 และ number2
บรรทัดที่ 5 ประกาศตัวแปร minus เก็บค่าการดำเนินการลบค่าในตัวแปร number1 และ number2
บรรทัดที่ 6 ประกาศตัวแปร multiply เก็บค่าการดำเนินการคูณค่าในตัวแปร number1 และnumber2
บรรทัดที่ 7 ประกาศตัวแปร devide เก็บค่าการดำเนินการหารค่าในตัวแปร number1 และ number2
บรรทัดที่ 8 ประกาศตัวแปร modulus เก็บค่าการดำเนินการหารเอาเศษค่าในตัวแปร number1 และ number2
บรรทัดที่ 9 แสดงผลบวกของตัวแปร number1 และ number2
บรรทัดที่ 10 แสดงผลลบของตัวแปร number1 และ number2
บรรทัดที่ 11 แสดงผลคูณของตัวแปร number1 และ number2
บรรทัดที่ 12 แสดงผลหารของตัวแปร number1 และ number2
บรรทัดที่ 13 แสดงผลหารเอาเศษของตัวแปร number1 และ number2
บรรทัดที่ 14 ปิดแท็กภาษา PHP
2.7.2.2 ตัวดําเนินการสําหรับกําหนดค่า (Assignment Operators)
เป็นตัวดําเนินการสําหรับการกําหนดค่า ใช้ในกรณีที่ต้องการให้ตัวแปรมีค่าตัวแปรตามที่ต้องการ โดยทั่วไปจะใช้เครื่องหมาย = ในการกําหนดค่าตัวแปร และสามารถใช้ร่วมกับตัวดําเนินการทางคณิตศาสตร์ได้เพื่อคํานวนค่าก่อนแล้วค่อยกําหนดค่าให้กับตัวแปร ดังตารางที่ 2.4
ตารางที่ 2.4 แสดงตัวดำเนินการกำหนดค่า (Assignment operators)
ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
= | สำหรับกำหนดค่าให้เท่ากับ | a = b เอาค่า b ไปให้ค่า a |
+= | สำหรับกำหนดค่าให้เท่ากับ ทางซ้ายบวกทางขวา | 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 |
ตัวอย่างโปรแกรมที่ 2.10 โปรแกรมแสดงตัวสําหรับกําหนดค่า
เขียนคำสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง แล้วบันทึกไฟล์ชื่อ operator_assignment.php
Source Code:
ผลลัพธ์ที่ได้:
อธิบายโปรแกรม:
บรรทัดที่ 1 เปิดแท็กภาษา PHP
บรรทัดที่ 2 - 3 กำหนดตัวแปร num1 และ num2 โดยให้ตัวแปร num1 เก็บค่าจำนวนเต็ม 25 และ ตัวแปร num2 เก็บค่าจำนวนเต็ม 4
บรรทัดที่ 4 ใช้คำสั่ง echo แสดงข้อความ Assignment Operators
บรรทัดที่ 5 ใช้คำสั่ง echo แสดงค่าของตัวแปร num1 และ num
บรรทัดที่ 6 กำหนดตัวแปร num1 ให้เก็บค่าการดำเนินการของตัวดำเนินการกำหนดค่า
บรรทัดที่ 7 ใช้คำสั่ง echo แสดงค่าของตัวแปร num1 และ num
** ในตัวอย่างคำสั่งจะกระทำเช่นเดียวกันกับทุกตัวดำเนินการที่กำหนดในตาราง **
บรรทัดที่ 18 ปิดแท็กภาษา PHP
2.7.2.3 ตัวดำเนินการเพิ่มค่าและลดค่า (increment/ decrement operator)
ตัวดำเนินการเพิ่มค่า (increment operator) ใช้เครื่องหมาย ++ และตัวดำเนินการลดค่า (decrement operator) ใช้เครื่องหมาย -- ตัวดำเนินการทั้งสองใช้ในการเพิ่มค่าทีละ 1 หรือลดค่าทีละ 1 ตัวดำเนินการเพิ่มค่าและลดค่าที่ใช้มีดังตารางที่ 2.5
ตารางที่ 2.5 แสดงตัวดำเนินการเพิ่มค่าและลดค่า (increment/ decrement operator)
ตัวดำเนินการ | ความหมาย |
++$x | เพิ่มค่าตัวแปรขึ้น 1 ค่าก่อน แล้วจึงส่งค่าตัวแปรกลับมา |
$x++ | ส่งค่าตัวแปรกลับมาก่อน แล้วจึงเพิ่มค่าขึ้น 1 ค่า |
--$x | ลดค่าตัวแปรลง 1 ตัวก่อน แล้วจึงส่งค่าตัวแปรกลับมา |
$x-- | ส่งค่าตัวแปรกลับมาก่อน แล้วจึงลดค่าลง 1 ค่า |
ตัวดำเนินการทั้งสองสามารถใส่ไว้ข้างหน้า (Prefix) หรือข้างหลัง (Postfix) ตัวแปรก็ได้
ตัวอย่างเช่น
x++ คือ x = x+1
++x คือ x = x+1
x-- คือ x = x-1
--x คือ x = x-1
ตัวดำเนินการเพิ่มค่าและตัวดำเนินการลดค่าสามารถใช้กับตัวแปร ทั้งที่มีชนิดข้อมูลเป็นตัวเลขจำนวนเต็มและตัวเลขจำนวนทศนิยม การวางเครื่องหมายไว้ด้านหน้าตัวแปรจะมีผลให้โปรแกรมทำการเพิ่มหรือลดค่าก่อนแล้วจึงทำคำสั่งของนิพจน์นั้น ส่วนการวางเครื่องหมายไว้ด้านหลังตัวแปร จะมีผลให้โปรแกรมทำการเพิ่มหรือลดค่า หลังจากทำคำสั่งของนิพจน์นั้น
ตัวอย่างโปรแกรมที่ 2.11 โปรแกรมแสดงตัวดําเนินการเพิ่มค่าและลดค่า
เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง แล้วบันทึกไฟล์ชื่อ operator_assignment.php
Source code:
ผลลัพธ์ที่ได้:
อธิบายโปรเเกรม:
บรรทัดที่ 1 เปิดแท็กภาษา PHP
บรรทัดที่ 2 กำหนดตัวแปร a ให้เก็บค่าจำนวนเต็ม 4
บรรทัดที่ 3 แสดงข้อความ เริ่มต้นตัวแปร a เท่ากับ แล้วตามด้วยค่าตัวแปร a
บรรทัดที่ 4 ให้เก็บค่าตัวแปร a โดยส่งค่าตัวแปรกลับมาก่อนจึงจะมีการเพิ่มค่า 1 ค่า
บรรทัดที่ 5 แสดงข้อความ a++ เท่ากับ แล้วตามด้วยค่าตัวแปร a
บรรทัดที่ 6 ให้เก็บค่าตัวแปร a ทีทำการเพิ่มค่า 1 ก่อนแล้วส่งค่าตัวแปร a กลับมา
บรรทัดที่ 7 แสดงข้อความ ++a เท่ากับ แล้วตามด้วยค่าตัวแปร a
บรรทัดที่ 8 ให้เก็บค่าตัวแปร a โดยส่งค่าตัวแปร a ก่อนจะทำการลดค่า 1 ค่า
บรรทัดที่ 9 แสดงข้อความ a-- เท่ากับ แล้วตามด้วยค่าตัวแปร a
บรรทัดที่ 10 ให้เก็บค่าตัวแปร a ทีทำการลดค่า a ลง 1 ค่าก่อนแล้วส่งค่าตัวแปร a กลับมา
บรรทัดที่ 11 แสดงข้อความ --a เท่ากับ แล้วตามด้วยค่าตัวแปร a
บรรทัดที่ 12 ปิดแท็กภาษา PHP
2.7.2.4 ตัวดำเนินการเปรียบเทียบ (Comparison operators)
เป็นตัวดำเนินการที่ใช้สำหรับเปรียบเทียบค่าของข้อมูลชนิดใด ๆ สองค่า โดยผลของการเปรียบเทียบเป็นได้ 2 กรณี คือ เป็นจริง (True) หรือเป็นเท็จ (False) ตัวดำเนินการปรียบเทียบ แสดงดังตารางที่ 2.6
ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
= = | เท่ากับ | $x == $y ผลลัพธ์ที่ได้คือ เท็จ เพราะ 70 ไม่เท่ากับ 30 |
= = = | เหมือนกัน | $x === $y ผลลัพธ์ที่ได้คือ เท็จ เพราะชนิดของข้อมูลไม่เหมือนกัน |
!= | ไม่เท่ากับ | $x != $y ผลลัพธ์ที่ได้คือ จริง เพราะ 70 ไม่เท่ากับ 30 |
< > | ไม่เท่ากับ | $x<>$y ผลลัพธ์ที่ได้คือ จริง เพราะ 70 ไม่เท่ากับ 30 |
!== | ไม่เหมือนกัน | $x !== $y ผลลัพธ์ที่ได้คือ จริง เพราะชนิดของข้อมูลไม่เหมือนกัน |
> | มากกว่า | $x > $y ผลลัพธ์ที่ได้คือ จริง เพราะ 70 มากกว่า 30 |
>= | มากกว่าหรือเท่ากับ | $x >= $y ผลลัพธ์ที่ได้คือ จริง เพราะ 30 มากกว่าหรือเท่ากับ 30 |
< | น้อยกว่า | $x < $y ผลลัพธ์ที่ได้คือ เท็จ เพราะ 70 มากกว่า 30 |
<= | น้อยกว่าหรือเท่ากับ | $a <= $y ผลลัพธ์ที่ได้คือ จริง เพราะ 30 น้อยกว่าหรือเท่ากับ 30 |
ตารางที่ 2.6 แสดงตัวดำเนินการเปรียบเทียบ
( ในตัวอย่างนี้กำหนดค่าตัวแปร $x = 70 $y =”30” และ $a = 30 โดยตัวแปร x เป็นข้อมูลแบบตัวเลข ส่วนตัวแปร y เป็นข้อมูลแบบสตริง และตัวแปร a เป็นข้อมูลแบบตัวเลข )
ตัวอย่างโปรแกรมที่ 2.12 โปรแกรมแสดงตัวดําเนินการเปรียบเทียบ
เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง แล้วบันทึกไฟล์ชื่อ operator_comparison.php
Source code:
ผลลัพธ์ที่ได้:
อธิบายโปรเเกรม:
บรรทัดที่ 1 เปิดแท็กภาษา PHP
บรรทัดที่ 2 กำหนดตัวแปร number1 ให้เก็บค่าจำนวนเต็ม 20
บรรทัดที่ 3 กำหนดตัวแปร number2 ให้เก็บค่าจำนวนเต็ม 40
บรรทัดที่ 4 – 5 ใช้คำสั่ง echo แสดงผลลัพธ์เป็นข้อความ และแสดงค่าของตัวดำเนินการเปรียบเทียบ โดยใช้ฟังก์ชัน var_dump แสดงชนิดข้อมูลของค่าตัวดำเนินการด้วย
2.7.2.5 ตัวดำเนินการทางตรรกะ (Logical operators)
เป็นตัวดำเนินการที่ใช้เชื่อมเงื่อนไข 2 เงื่อนไข หรือมากกว่า 2 เงื่อนไข เพื่อให้การเปรียบเทียบมีความละเอียดมากขึ้น ใช้สัญลักษณ์แทนในแต่ละเครื่องหมาย ดังตารางที่ 2.7 ส่วนผลลัพธ์ในการใช้ตัวดำเนินการทางตรรก แสดงในตารางที่ 2.8, 2.9, 2.10 และ 2.11
ตารางที่ 2.7 แสดงตัวดำเนินการทางตรรกะ
ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
and | และ (AND) ค่าทางตรรกะ | $a and $b |
or | หรือ (OR) ค่าทางตรรกะ | $a or $b |
xor | Exclusive OR (XOR) ค่าทางตรรกะ | $a xor $b |
&& หรือ & | และ (AND) ค่าทางตรรกะ | $a && $b (conditional) |
|| หรือ | | หรือ (OR) ค่าทางตรรกะ | $a || $b (conditional) |
! | ไม่ (NOT) (กลับค่าทางตรรกะ) | !$a |
^ | Exclusive OR (XOR) ค่าทางตรรกะ | $a ^ $b |
ตัวดำเนินการที่มีเครื่องหมาย && และ || เรียกว่าตัวดำเนินการทางตรรกแบบ short circuit โดยที่ && เป็นการ AND ค่าทางตรรกะ ซึ่งจะแตกต่างจาก && ตรงที่ && จะหยุดเปรียบเทียบถ้านิพจน์ตัวแรกเป็นเท็จเช่นเดียวกับ || ที่เป็น OR ค่าทางตรรกะ ซึ่งจะแตกต่างจาก | ตรงที่ || จะหยุดการเปรียบเทียบถ้านิพจน์ตัวแรกเป็นจริง
ตารางที่ 2.8 แสดงผลลัพธ์การ AND ค่าทางตรรกะ
X | Y | X && Y |
จริง (true) | จริง (true) | จริง (true) |
จริง (true) | เท็จ (false) | เท็จ (false) |
เท็จ (false) | จริง (true) | เท็จ (false) |
เท็จ (false) | เท็จ (false) | เท็จ (false) |
ถ้าทั้งสองเงื่อนไขเป็นจริงทั้งคู่ ผลที่ได้จะเป็นจริง นอกนั้นเป็นเท็จหมด
ตารางที่ 2.9 แสดงผลลัพธ์การ OR ค่าทางตรรกะ
X | Y | X || Y |
จริง (true) | จริง (true) | จริง (true) |
จริง (true) | เท็จ (false) | จริง (true) |
เท็จ (false) | จริง (true) | จริง (true) |
เท็จ (false) | เท็จ (false) | เท็จ (false) |
ถ้าทั้งสองเงื่อนไขเป็นเท็จทั้งคู่ ผลที่ได้จะเป็นเท็จ นอกนั้นเป็นจริงหมด
ตารางที่ 2.10 แสดงผลลัพธ์การ NOT ค่าทางตรรกะ
X | !X |
จริง (true) | เท็จ (false) |
เท็จ (false) | จริง (true) |
เป็นค่าตรงข้ามกับเงื่อนไขที่กำหนด
ตารางที่ 2.11 แสดงผลลัพธ์การ Exclusive OR (XOR) ค่าทางตรรกะ
X | Y | X ^ Y |
จริง (true) | จริง (true) | เท็จ (false) |
จริง (true) | เท็จ (false) | จริง (true) |
เท็จ (false) | จริง (true) | จริง (true) |
เท็จ (false) | เท็จ (false) | เท็จ (false) |
เป็นค่าตรงข้ามกับเงื่อนไขที่กำหนด (จริง-จริง/เท็จ-เท็จ) ผลที่ได้จะเป็นเท็จ นอกนั้นเป็นจริง
2.7.2.6 ตัวดำเนินการเชิงข้อความ (String operators)
เป็นตัวดำเนินการที่ใช้ในการจัดการข้อมูลประเภทข้อความ ตัวดำเนินการเชิงข้อความจะใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน ข้อความกับตัวแปร หรือ ตัวแปรกับข้อความ
ตารางที่ 2.12 แสดงตัวดำเนินการทางข้อความ
ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
. | เชื่อต่อข้อความสองข้อความเป็นข้อความเดียว | $c = $a.$b |
.= | เชื่อต่อตัวแปรที่อยู่ทางด้านขวากับตัวแปรที่อยู่ทางด้านซ้าย | $a .= $b |
ตัวอย่างโปรแกรมที่ 2.13 โปรแกรมแสดงตัวดำเนินการเชิงข้อความ
เขียนคำสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง แล้วบันทึกไฟล์ชื่อ operator_string.php
Source Code:
ผลลัพธ์ที่ได้:
อธิบายโปรแกรม:
บรรทัดที่ 1 เปิดแท็กภาษา PHP
บรรทัดที่ 2 กำหนดตัวแปร txt1 ให้เก็บข้อความว่า INFORMATION
บรรทัดที่ 3 กำหนดตัวแปร txt2 ให้เก็บข้อความว่า TECHNOLOGY
บรรทัดที่ 4 กำหนดตัวแปร txt3 ให้เก็บค่าการเชื่อมต่อข้อความของตัวแปร txt1 และ txt2 เป็นข้อความเดียวกัน
บรรทัดที่ 5 ใช้คำสั่ง echo แสดงผลลัพธ์ของตัวแปร txt3
บรรทัดที่ 6 ปิดแท็กภาษา PHP