Home Back-End Bài 4: Toán tử và biểu thức trong PHP

Tiếp tục series học PHP căn bản, bài viết này mình sẽ nói về toán tử. Trong ngôn ngữ PHP nói riêng và các ngôn ngữ lập trình nói chung thường hỗ trợ một tập các toán tử (operator): nó có hành vi gần giống như hàm, nhưng có cú pháp và ngữ nghĩa khác với hàm thông thường. Các ví dụ đơn giản thông dụng bao gồm toán tử số học (phép cộng với +), so sánh (với >), và logic (như AND hay &&).

toan tu va bieu thuc trong php

Toán tử và biểu thức trong PHP

Ngôn ngữ PHP hỗ trợ các kiểu toán tử sau

  • Toán tử số học
  • Toán tử so sánh (hay toán tử quan hệ)
  • Ba là Toán tử logic (hay toán tử luận lý)
  • Toán tử gán
  • Toán tử điều kiện (hoặc toán tử 3 ngôi)

Trước khi tham gia soi mó vào các toán tử trên, ta cần phải  biết thêm 1 khái niệm nữa đó là Biểu Thức.

Khái Niệm Về Biểu Thức

Biểu thức là sự kết hợp của một hay nhiều giá trị, hằng số, biến, toán tử, và hàm,… Mói một cách khác, Biểu Thức là một tập hợp bao gồm các toán hạng và toán tử.

Toán hạng là những giá trị, hằng số, biến,…được truyền vào trong phép toán. Toán tử (operator) là các phép tính + , – , * , / , % ,…

Toán tử số học trong PHP

Bảng dưới liệt kê các toán tử số học được hỗ trợ bởi ngôn ngữ PHP:

Giả sử biến $a giữ giá trị 10, biến $b giữ giá trị là 20 thì:

Toán tửMiêu tảBiểu Thức Ví dụ
+$cộng hai toán hạng$a + $b kết quả là 30
Trừ toán hạng thứ hai từ toán hạng đầu$a – $b kết quả là -10
*Nhân hai toán hạng$a * $b kết quả là 200
/Phép chia$b / $a kết quả là 2
%Phép lấy số dư$b % $a kết quả là 0
++Toán tử tăng, tăng giá trị toán hạng thêm một đơn vị$a++ kết quả là 11
Toán tử giảm, giảm giá trị toán hạng đi một đơn vị$a– kết quả là 9

Toán tử quan hệ (so sánh) trong PHP

Bảng dưới liệt kê các toán tử so sánh được hỗ trợ bởi ngôn ngữ PHP. Giả sử biến $a giữ giá trị 10, biến $b giữ giá trị 20, thì:

Toán tửMiêu tảBiểu Thức Ví dụ
==Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true.($a == $b) là false.
!=Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true.($a != $b) là true.
>Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true.($a > $b) là false.
<Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true.($a < $b) là true.
>=Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true.($a >= $b) là false.
<=Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true.($a <= $b) là true.

Ngoài ra còn có toán tử quan hệ === dùng để so sánh giá trị giữa các biến và hằng đúng theo giá trị và kiểu dữ liệu của nó.

Ví dụ ta có $a = ’123′ là kiểu string, $b = 123 là kiểu int thì phép ($a == $b) cho kết quả là true, còn phép ($a === $b) sẽ cho kết quả là false vì 2 biến tuy giá trị bằng nhau nhưng không cùng kiểu dữ liệu.

=> Toán tử quan hệ ===mang tính chất tuyệt đối.

Toán tử luận lý logic trong PHP

Toán tử luận lý là ký hiệu dùng để kết hợp hay phủ định biểu thức có chứa các toán tử quan hệ, những biểu thức dùng toán tử luận lý trả về giá trị TRUE hoặc FALSE.

Bảng dưới đây chỉ rõ tất cả các toán tử logic được hỗ trợ bởi ngôn ngữ PHP. Giả sử biến $a có giá trị 10 và biến $b có giá trị 20, thì:

Toán tửMiêu tảBiểu Thức Ví dụ
andĐược gọi là toán tử Logic AND. Nếu cả hai toán hạng là true thì điều kiện trở thành true($a and $b) là true.
orĐược gọi là toán tử Logic OR. Nếu một trong hai toán hạng là đúng thì điều kiện trở thành true($a or $b) là true.
&&Được gọi là toán tử Logic AND. Nếu cả hai toán hạng là true thì điều kiện trở thành true($a && $b) là true.
||Được gọi là toán tử Logic OR. Nếu một trong hai toán hạng là đúng thì điều kiện trở thành true($a || $b) là true.
!Được gọi là toán tử Logic NOT. Sử dụng để đảo ngược trạng thái logic của toán hạng. Nếu điều kiện là true thì toán tử Logic NOT sẽ cho kết quả là false!($a && $b) là false.

Độ ưu tiên toán tử luận lý

Độ ưu tiên theo thứ tự như sau: NOT -> AND -> OR

Toán tử gán trong PHP

Dưới đây là những toán tử gán được hỗ trợ bởi ngôn ngữ PHP:

Toán tửMiêu tảBiểu Thức Ví dụ
=Toán tử gán đơn giản. Gán giá trị toán hạng bên phải cho toán hạng trái$c = $a + $b sẽ gán giá trị của $a + $b vào trong $c
+=Thêm giá trị toán hạng phải tới toán hạng trái và gán giá trị đó cho toán hạng trái$c += $a là tương đương với $c = $c + $a
-=Trừ đi giá trị toán hạng phải từ toán hạng trái và gán giá trị này cho toán hạng trái$c -= $a là tương đương với $c = $c – $a
*=Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái$c *= $a là tương đương với $c = $c * $a
/=Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái$c /= $a là tương đương với $c = $c / $a
%=Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái$c %= $a là tương đương với $c = $c % $a
//ví dụ
$a = $b = $c =10; //gán các toán hạng bằng nhau

Toán tử Ternary trong PHP

Toán tử Ternary ước lượng một biểu thức là true hoặc false và sau đó thực thi một trong hai lệnh đã cho tùy thuộc vào kết quả của việc ước lượng. Toán tử điều kiện có cú pháp như sau:

Toán tửMiêu tảVí dụ
? :Biểu thức điều kiệnNếu điều kiện là true ? Thì giá trị X : Nếu không thì giá trị Y

Đặc biệt: Spaceship Operator

Toán tử Spaceship mới (<=>) được giới thiệu trong phiên bản PHP 7, có thể được sử dụng để so sánh hai biểu thức. Nó còn được gọi là toán tử so sánh kết hợp.

Toán tử Spaceship trả về giá trị sau

  • 0 nếu cả hai toán hạng đều bằng nhau
  • 1 nếu bên trái lớn hơn
  • -1 nếu bên phải lớn hơn
Toán tử<=> Tương đương
$x < $y($x <=> $y) === -1
$x <= $y($x <=> $y) === -1 || ($x <=> $y) === 0
$x == $y($x <=> $y) === 0
$x != $y($x <=> $y) !== 0
$x >= $y($x <=> $y) === 1 || ($x <=> $y) === 0
$x > $y($x <=> $y) === 1

Nếu sử dụng toán tử thông thường thì chỉ trả về True hoặc False. Nhưng khi cần để thực hiện tiếp một công việc đặc thù nào đó thì toán tử Spaceship sẽ nhanh hơn.

via laptrinhvienphp.com

Phân loại toán tử trong PHP

Tất cả toán tử ở trên có thể được phân thành các loại sau trong PHP:

  • Toán tử một ngôi (unary operator), mà đặt trước một toán hạng.
  • Toán tử nhị phân (binary operator), nhận hai toán hạng và thực hiện các hoạt động số học và logic đa dạng.
  • Tiếp theo là Toán tử điều kiện (ternary operator) hay là toán tử tam ngôi, nhận ba toán hạng và ước lượng hoặc biểu thức thứ hai hoặc biểu thức thứ ba, phụ thuộc vào kết quả ước lượng của biểu thức đầu tiên.
  • Toán tử gán, mà gán một giá trị cho một biến.

Độ ưu tiên của các toán tử trong PHP

Độ ưu tiên các toán tử trong PHP thiết lập thứ tự ưu tiên tính toán của một biểu thức. Hay nói cách khác, Thứ tự ưu tiên toán tử trong PHP xác định cách biểu thức được tính toán.

Ví dụ: toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước.

LoạiToán tửThứ tự ưu tiên
Unary! , ++ , —Phải sang trái
Tính nhân* , / , %Trái sang phải
Tính cộng+ , Trái sang phải
Quan hệ< , <= , > , >=Trái sang phải
Tính bằng== , !=Trái sang phải
Logic AND&&Trái sang phải
Logic OR||Trái sang phải
Điều kiện?:Phải sang trái
Gán= , += , -= , *= , /= , %=Phải sang trái

Lưu ý: Việc tính toán biểu thức số học sẽ được tính toán từ trái qua phải và ưu tiên trong ngoặc trước kết hợp với độ ưu tiên trong bảng.

Kết thúc

Bài viết trên mình đã giới thiệu cho các bạn các loại toán tử trong PHP và các biểu thức liên quan đến nó, các bạn thấy thắc mắc chỗ nào cứ để lại bình luận bên dưới bài viết để cùng thảo luận nhé! Sang bài học tiếp theo mình sẽ nói qua về các loại biểu thức điều kiện quan trọng trong PHP. Các bạn nhớ đón đọc nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!

Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

by tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

Related Posts

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x