Categories PHP-MySQL

Toán tử so sánh và toán tử logic trong PHP

Hôm nay Kiến càng sẽ cùng bạn tìm hiểu các toán tử so sánh và logic vốn rất hay được dùng trong PHP mà chủ yếu là đi kèm với các hàm điều kiện (ví dụ như if). Nếu biết ngôn ngữ lập trình khác, bạn sẽ thấy tầm quan trọng và phổ biến của những toán tử này.


Toán tử so sánh

Toán tử Tên Ví dụ
==
Bằng
$url == freehost.page
$Xman == TRUE
!=
Không bằng
$so_chia != 0
<
Nhỏ hơn
$tuoi < 10
<=
Nhỏ hơn hoặc bằng
$tong_tien <= 300000
>
Lớn hơn
$diem_trung_binh > 8
>=
Lớn hơn hoặc bằng
$tuoi >= 18

Toán tử logic và thứ tự ưu tiên

Toán tử Tên Ví dụ
!
Phủ định
!is_numeric($so_luong)
&&
$tuoi >=18 && $gioi_tinh == ‘nam’
||
Hoặc
$tot_nghiep == ‘giỏi’ || $tot_nghiep == ‘khá’
  • Toán tử Và (&&) sẽ trả kết quả là TRUE khi và chỉ khi cả 2 phía của toán tử đều là TRUE, trả về FALSE khi chỉ cần một toán tử là FALSE (bạn có thể tìm hiểu thêm về TRUE và FALSE ở đây).
  • Toán tử Hoặc (||) sẽ trả về kết quả là TRUE khi chỉ cần một toán tử là TRUE, trả kết quả là FALSE khi và chỉ khi cả 2 phía của toán tử đều là FALSE.
  • Toán tử Phủ định (!) sẽ trả về kết quả ngược với chuỗi được phủ định, chẳng hạn nếu X là TRUE, thì !X có giá trị FALSE. Nếu X là FALSE thì !X có giá trị TRUE.
  • Để thay đổi thứ tự ưu tiên thực hiện của các toán tử chúng ta sử dụng dấu ngoặc đơn ()

Ý nghĩa của các toán tử Và, Hoặc, Phủ định không chỉ đúng trong PHP mà còn đúng trong các ngôn ngữ lập trình khác.

Nhầm lẫn giữa toán tử gán (=) và toán tử so sánh bằng (==) là lỗi lập trình PHP rất hay gặp, bạn nên chú ý điều này.


Bạn không cần phải mở đóng ngoặc quá nhiều

Ở các câu lệnh mẫu trên có lẽ bạn đã để ý rằng toán tử so sánh được ưu tiên hơn toán tử logic, do vậy trong câu lệnh như:

$a > $b && $c > 5

Thì PHP sẽ kiểm tra xem $a có lớn hơn $b không, rồi kiểm tra $c có lớn hơn 5 không, cuối cùng mới thực hiện toán tử logic. Nhờ vậy, bạn không phải viết câu lệnh dài dòng như thế này:

($a > $b) && ($c > 5)

Về khoảng cách giữa các biến và toán tử logic cũng như toán tử so sánh

Nếu bạn viết các toán tử sát sàn sạt vào biến, câu lệnh vẫn chạy bình thường, ví dụ:

$a = 6;
$b = 5;
$c = 7;

if ($a>$b&&$c>5) {echo "cả hai điều kiện đều đúng";}

Nhưng nhìn chung chúng ta nên tránh kiểu viết này vì nó dễ gây nhầm lẫn. Chúng ta nên viết như sau:

$a = 6;
$b = 5;
$c = 7;

if ($a > $b && $c > 5) {echo "cả hai điều kiện đều đúng";}

Hoặc nếu có lười, tiện thì viết như dưới cũng được:

$a = 6;
$b = 5;
$c = 7;

if ($a>$b && $c>5) {echo "cả hai điều kiện đều đúng";}

Nhưng cần hết sức tránh toán tử logic bị dính vào các biến, vì như vậy rất khó phân biệt, dễ sai sót.

Back to Top