Tóm tắt: trong hướng dẫn này, bạn sẽ tìm hiểu về toán tử PHP OR (||) và cách sử dụng nó để xây dựng biểu thức logic phức tạp.
Giới thiệu về toán tử OR trong PHP
Toán tử logic OR
chấp nhận hai toán hạng và trả về true
nếu bất kỳ toán hạng nào là true; nếu không, nó trả về false
. Nói cách khác, toán tử OR logic trả về false
nếu cả hai toán hạng đều là false
.
Để biểu thị toán tử OR logic, PHP sử dụng từ khóa or
hoặc ||
như sau:
expression1 or expression2
Hoặc
expression1 || expression2
Bảng dưới đây minh họa kết quả của toán tử or
:
expression1 | expression2 | expression1 || expression2 |
---|---|---|
true |
true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
Lưu ý rằng các từ khóa or
, Or
, và OR
là giống nhau vì từ khóa PHP không phân biệt chữ hoa chữ thường.
Các toán tử ||
và or
trả về cùng kết quả. Sự khác biệt duy nhất giữa các toán tử ||
và or
là mức độ ưu tiên của chúng. Toán tử or
có mức độ ưu tiên cao hơn so với toán tử ||
.
Ví dụ về toán tử OR trong PHP
Giả sử bạn cần xóa bộ nhớ cache của trang web nếu cờ $exprired
hoặc $purge
được đặt thành true
. Để làm điều đó, bạn có thể sử dụng toán tử OR logic như sau:
<?php $expired = true; $purged = false; $clear_cache = $expired || $purged; var_dump($clear_cache);
Kết quả:
bool(true)
Vì $expired
là true
, kết quả của toán tử OR cũng là true
.
Tuy nhiên, nếu bạn thay đổi $expired
thành false
, kết quả sẽ là false
như được hiển thị trong ví dụ sau:
<?php $expired = false; $purged = false; $clear_cache = $expired || $purged; var_dump($clear_cache);
Trong thực tế, bạn thường sử dụng toán tử OR logic trong các câu lệnh if, if-else, if-elseif, while, và do-while .
Rút ngắn đường
Khi toán hạng đầu tiên là true
, toán tử OR logic biết rằng kết quả cũng phải là true
. Trong trường hợp này, nó không đánh giá toán hạng thứ hai. Quá trình này được gọi là rút ngắn đường.
Trong thực tế, bạn thường thấy rằng toán tử or được sử dụng theo mẫu sau:
function_call() || die(message)
Nếu function_call()
trả về true
, nó đã thành công. PHP sẽ không bao giờ thực thi toán hạng thứ hai là cuộc gọi hàm die()
. Ngược lại, PHP sẽ gọi hàm die()
với thông báo lỗi.
Ví dụ:
<?php function connect_to_db() { return false; } connect_to_db() || die('Không thể kết nối đến cơ sở dữ liệu.');
Kết quả:
Không thể kết nối đến cơ sở dữ liệu
Trong ví dụ này, hàm connect_to_db()
trả về false
, PHP gọi hàm die()
hiển thị thông báo lỗi.
Những vấn đề với toán tử OR trong PHP
Xem ví dụ sau:
<?php $result = false or true; var_dump($result);
Kết quả:
bool(false)
Trong ví dụ này, bạn sẽ mong đợi rằng $result là true vì biểu thức false or true trả về true. Tuy nhiên, thực tế không phải như vậy.
Khi đánh giá câu lệnh sau:
$result = false or true;
PHP sẽ đánh giá $result = false
trước và sau đó là toán tử or
vì toán tử =
có mức độ ưu tiên cao hơn toán tử or
.
Chú ý rằng mỗi toán tử có mức độ ưu tiên. Và PHP sẽ đánh giá toán tử có mức độ ưu tiên cao hơn trước các toán tử có mức độ ưu tiên thấp.
Kỹ thuật, nó tương đương với câu lệnh sau:
($result = false) or true;
Do đó, $result
được gán giá trị false
.
Để sửa điều này, bạn cần sử dụng dấu ngoặc để thay đổi thứ tự đánh giá:
<?php $result = (false or true); var_dump($result);
Kết quả:
bool(true)
Hoặc bạn có thể sử dụng toán tử ||:
<?php $result = false || true; var_dump($result);
Kết quả:
bool(true)
Do đó, đây là một thói quen tốt luôn sử dụng toán tử ||
thay vì toán tử or
.
Tóm tắt
- Sử dụng toán tử OR trong PHP (
or
,||
) để kết hợp hai biểu thức và trả vềtrue
nếu một trong hai biểu thức làtrue
; nếu không, nó trả vềfalse
. - Toán tử OR logic là rút ngắn đường.
- Sử dụng toán tử
||
thay vì toán tửor
.