Các loại toán tử trong PHP 5

Sharing is caring!

Hi, Cũng lâu lắm rồi mới quay trở lại series bài trong PHP 5. Hôm nay tui sẽ giới thiệu tiếp với các bạn bài viết về toán tử trong PHP 5. Đã là làm việc với máy tính thì phải biết tính toán chứ đứng không các bạn. Rồi, vậy hôm nay chúng ta sẽ xem coi trong PHP có bao nhiêu loại toán tử nha.

Để có cái nhìn tổng quát, tui sẽ list ra một mớ các nhóm toán tử này như sau:

  1. Toán tử số học – Arithmetic Operators (là các phép toán đơn giản cộng, trừ, nhân, chia đó các bạn)
  2. Toán tử so sánh – Comparison Operators
  3. Toán tử logic – Logical Operators
  4. Toán tử logic trên bit – Bitwise Operators
  5. Toán tử dịch chuyển bit – Shift Operators
  6. Toán tử tự động tăng hoặc giảm – Auto Increment or Decrement Operators
  7. Toán tử gán – Assignment Operators
  8. Toán tử điều kiện – Conditional Operator
  9. Toán tử nối chuỗi – String Concatenation Operator

Trên đây là các loại toán tử của PHP, chúng ta xem xét từng loại nha.

1. Toán tử số học – Arithmetic Operators

Bao gồm các loại như sau:

+ Cộng
–  Trừ
Nhân
Chia. Kết quả phép chia luôn là một giá trị kiểu float, không phải là phần nguyên như trong C#.
Chia lấy phần dư
-(expr) Đặt dấu trừ trước một biểu thức để kết quả của biểu thức này là một số âm nếu kết quả của biểu thức là số dương và ngược lại.

Ví dụ:

Kết qua sẽ là:

2. Toán tử so sánh – Comparison Operators

Kết quả của các phép toán so sánh này chỉ gồm 2 giá trị hoặc true(1) hoặc false(0) Bao gồm các toán tử sau:

Chỉ so sánh về mặt giá trị
> Lớn hơn
Nhỏ hơn
>=  Lớn hơn hoặc bằng
<=  Nhỏ hơn hoặc bằng
==  Bằng nhau
!= hoặc <> Khác nhau
So sánh cả về mặt giá trị và kiểu dữ liệu
=== Bằng nhau cả giá trị và cùng kiểu dữ liệu – có nghĩa là có cùng giá trị ví dụ là 5 và phải cùng kiểu dữ liệu ví dụ là int thì mới gọi là bằng nhau
!== Khác nhau hoặc giá trị bằng nhau nhưng khác kiểu dữ liệu

Ví dụ:

So sánh giá trị

Các bạn sẽ thấy kết quả là:

Cái này cũng dễ hiểu, không khó, ở trường hợp cả $a và $b có giá trị là 9 nhưng khác kiểu dữ liệu thì PHP cũng chỉ so sánh giá trị thôi.

So sánh cả giá trị và kiểu dữ liệu.

Kế quả là:

Các bạn thấy kết quả phép so sánh ===false!==true, do là cùng giá trị là 9 nhưng $a là kiểu int và $b là kiều float.

3. Toán tử logic – Logical Operators

Toán tử loại này dùng để so sánh giá trị của 2 biểu thức với nhau. Giá trị của toán tử loại này cũng là hoặc true(1) hoặc false(0)

&& Logical AND (expr1) && (expr2) true khi và chỉ khi cả expr1=trueexpr2=true, các trường hợp khác là false
||  Logical OR (expr1) || (expr2) false khi và chỉ khi cả expr1=falseexpr2=false, các trường hợp khác là true
Logical NOT !(expr1) false khi expr1=true và ngược lại

Nếu chưa hiểu, các bạn có thể xem cái bảng giá trị sau:

expr1 expr2 expr1 && expr2 expr1 || expr2 !(expr1)
true true true true false
true false false true
false true false true true
false false false false

Ví dụ:

Kết quả là:

Các bạn cứ tự thay đổi giá trị cũng như phép so sánh để thấy các kết quả khác nhau nhé.

4. Toán tử logic trên bit – Bitwise Operators

Đầu tiên tui sẽ nói sơ qua số nhị phân. Do máy tính nó chỉ hiểu 2 giá trị là 0 và 1 thôi, cho nên chúng ta phải dùng hệ nhị phân để biểu diễn một giá trị nào đó. Để cho dễ hình dung, tui lấy một con số là 29. Thì số 29 khi chuyển sang hệ nhị phân sẽ là 00011101 (theo block 8 bit)

Tui sẽ viết một bài khác nói về cách chuyển số thập phân sang nhị phân và ngược lại

Vậy toán tử bitwise này nó sẽ làm việc trên từng cái bit 0 và 1 của cái dãy 000011101 này. Xem bảng bên dưới:

& Bitwise AND $a & $b
Bitwise OR $a | $b
^ Bitwise NOT $a ^ $b
~ Bitwise Negation ~$a

Bảng giá trị của từng bit của biến $a và $b(từng cặp 1 theo cột).

$a $b $a & $b $a | $b $a ^ $b ~$a
0 0 0 0 0 1
0 1 0 1 1
1 0 0 1 1 0
1 1 1 1 0

Rồi, xem ví dụ nha các bạn

Ví dụ:

và kết quả là:

Thấy kết quả nó ra kì kì đúng không các bạn? Vậy các bạn xem mình vẽ cái table, chuyển giá trị sang nhị phân rồi tính ha.

3 & 6 = 2

bitwise and

3 | 6 = 7

bitwise or

3 ^ 6 = 5

bitwise xor

~3 = -4

bitwise negation

Với toán tử ~ này, đáng lẽ giá trị nó sẽ là 128 + 64 + 32 + 16 + 8 + 4 = 252 nhưng tại sao nó lại ra là -4 Thinking ? Dễ điên lắm nha các bạn Daze . Chổ này nó liên quan đến khái niệm “Bù 2” dùng để biểu diễn số âm trong hệ nhị phân. Tui sẽ nói thêm một chút về cái vụ bù 2 này. Để biểu diễn con số -4 trong hệ nhị phân, ta làm như sau:

Chuyển giá trị dương 4 ra nhị phân, ta được: 0000 0100.

Chuyển tất cả bit 0 thành 1 và bit 1 thành 0, ta được: 1111 1011.

Cộng thêm 1 vào kết quả ở bước 2, ta được: 1111 1011 + 0000 0001 = 1111 1100.

Vậy là -4 trong hệ nhị phân là 1111 1100. Trong khi đó phép toán ~3 cũng trả về giá trị nhị phân là 1111 1100 như hình trên.

Suy ra là ~3 = -4 hay nói tổng quát là ~N = -(N+1).

5. Toán tử dịch chuyển bit – Shift Operators

Cũng lại là chơi với bit, Ta có thể dịch bit sang trái hoặc sang phải, sau khi dịch bao nhiêu bit thì các bit trống ta thêm số 0 vào.

<< Dịch bit sang trái
>>  Dich bit sang phải

Ví dụ như sau:

Kết quả là:

Xem hình minh họa cái vụ dịch bit này cho dễ hiểu nhé các bạn.

13 << 4

shift left

56 >> 3

shift right

Đối với toán tử dịch bit, càng dịch sang trái thì giá trị càng lớn và ngược lại.

6. Toán tử tự động tăng hoặc giảm – Auto Increment or Decrement Operators

Toán tử này đơn giản lắm các bạn, dùng để tăng 1 hoặc giảm 1.

++

(2 dấu +) 

++$a Tăng giá trị $a thêm 1 rồi mới trả giá trị của $a
$a++ Trả giả trị hiện tại của $a rồi mới tăng giá trị  của $a thêm 1

(2 dấu -)

–$a Giảm giá trị $a đi 1 rồi mới trả giá trị của $a
$a– Trả giả trị hiện tại của $a rồi mới giảm giá trị của $a đi 1

Xem ví dụ nhé các bạn:

Kết quả là:

Cũng dễ ha, toán tử này dành cho ai lười thay thì viết $a + 1 thì viết ++$a hoặc $a++.

7. Toán tử gán – Assignment Operators

= Gán giá trị hoặc expr cho biến: $a = 10; $b = 8 * 4; $c = $b * 4
+= $a += $c tương đương $a = $a + $c
-=  $a -= $b tương đương $a = $a – $b
*=  $a *= ($b + $c) tương đương $a = $a * ($b + $c)
/= $a /= 5 tương đương $a = $a / 5
%= $a %= 3 tương đương $a = $a % 3
<<= $b <<= 3 tương đương $b = $b << 3
>>= $b >>= 4 tương đương $b = $b >> 4
&= $b &= 11 tương đương $b = $b & 11
|= $a |= 6 tương đương $a = $a | 6
^= $a ^= 4 tương đương $a = $a ^ 4

8. Toán tử điều kiện – Conditional Operator

Toán tử này là sự kết hợp giữa kiểm tra điều kiện nào đó rồi gán giá trị tương ứng với điều kiện đang được xét.

(Condition) ? expr1 : expr2

Nếu Condition == true thì nó trả giá trị là expr1, ngược lại nó trả giá trị là expr2

Ví dụ:

Kết quả là:

Vì điều kiện 10 < 20 và $c = true là đúng nên $d được gán là “Hello Peter”.

9. Toán tử nối chuỗi – String Concatenation Operator

Nó còn gọi là toán tử dấu chấm . dùng để nối hai hoặc nhiều chuỗi với nhau hoặc một chuối với bất kỳ giá trị là kiểu int, float

Ví dụ:

Kế quả là:

Mệt quớ Tired , vậy là xong phần toán tử trong PHP rồi đấy. Các bạn từ từ mà ngâm cứu nha. Hẹn gặp lại các bạn ở những bài tiếp theo. Bye

Sharing is caring!

Bài 02 - Khai báo biến và phạm vi sử dụng biến trong PHP 5

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares