Tóm tắt: Toán tử ba ngôi Trong bài hướng dẫn này, bạn sẽ học cách sử dụng Ternary Operator trong PHP để làm mã code ngắn gọn và dễ đọc hơn.
Giới thiệu về Ternary Operator trong PHP
Đây là một cách viết tắt cho câu lệnh
if…else. Thay vì viết như sau:
<?php if (condition) { $result = value1; } else { $result = value2; }
Bạn có thể sử dụng cách viết ngắn gọn như sau:
$result = condition ? value1 : value2;
Cách hoạt động:
- Đầu tiên. PHP đánh giá điều kiện. Nếu điều kiện đúng, biểu thức bên phải trả về
value1
; ngược lại, trả vềvalue2
. - Thứ hai, PHP gán kết quả của biểu thức bên phải cho biến
$result
.
Như bạn có thể thấy, bằng cách sử dụng toán tử 3 ngôi này, bạn có thể làm cho mã code ngắn gọn hơn.
Lưu ý rằng tên Ternary Operator đến từ việc toán tử này yêu cầu ba toán hạng: biểu thức
, value1
, value2
.
Ví dụ về toán tử Ternary Operator trong PHP
Giả sử bạn muốn hiển thị liên kết đăng nhập nếu người dùng chưa đăng nhập và liên kết đăng xuất nếu người dùng đã đăng nhập. Để làm điều đó, bạn có thể sử dụng câu lệnh if...else
như sau:
<?php $is_user_logged_in = false; if ($is_user_logged_in) { $title = 'Logout'; } else { $title = 'Login'; }
Trong ví dụ này, $title
sẽ là 'Login'
vì $is_user_logged_in
được đặt là false
. Mã code khá dài. Bạn có thể làm ngắn gọn hơn bằng cách sử dụng này như sau:
<?php $is_user_logged_in = false; $title = $is_user_logged_in ? 'Logout' : 'Login';
Bây giờ nó ngắn gọn hơn nhiều. Nếu dòng code dài, bạn luôn có thể chia nhỏ nó như sau:
<?php $is_user_logged_in = false; $title = $is_user_logged_in ? 'Logout' : 'Login';
Cách viết tắt toán tử ba ngôi
Bắt đầu từ PHP 5.3, bạn có thể sử dụng toán tử Ternacy Operator viết tắt như sau:
$result = $initial ?: $default;
Trong cú pháp này, PHP đánh giá $initial
trong ngữ cảnh boolean. Nếu $initial
đúng, PHP gán giá trị của $initial
cho biến $result
. Ngược lại, nó gán $default
vào biến $result
.
Ví dụ sau sử dụng toán tử ba ngôi viết tắt để gán giá trị của $path
cho biến $url
nếu $path
không rỗng. Nếu $path
rỗng, nó gán chuỗi chữ ‘/’ vào biến $url
:
<?php $path = '/about'; $url = $path ?: '/'; echo $url; // /about
Kết quả:
/about
Chaining các toán tử ba ngôi
Về mặt kỹ thuật, bạn có thể nối chuỗi các Ternacy Operator bằng cách sử dụng dấu ngoặc đơn.
Giả sử bạn muốn hiển thị các thông báo khác nhau nếu người dùng đủ điều kiện và có đủ điểm. Ví dụ sau nối hai toán tử 3 ngôi:
<?php $eligible = true; $has_credit = false; $message = $eligible ? ($has_credit ? 'Có thể sử dụng điểm' : 'Không đủ điểm') : 'Không đủ điều kiện để mua'; echo $message;
Đa phần thời gian, nối chuỗi nhiều toán tử 3 ngôi này làm cho mã code khó đọc hơn. Trong trường hợp này, tốt hơn hết là sử dụng câu lệnh
if…else hoặc
if…elseif.
Tóm tắt
- Toán tử Ternary Operator (ba ngôi) (
? :
) là một cách viết tắt cho câu lệnhif...else
. - Hãy sử dụng toán tử ba ngôi khi nó làm cho mã code của bạn ngắn gọn và dễ đọc hơn.