Toán tử ba ngôi – Giới thiệu về Ternary Operator trong PHP

Toán tử ba ngôi - Giới thiệu về Ternary Operator trong PHP

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'$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ệnh if...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.

Thành Nguyễn

Tôi là Thành, nên tôi đặt tên blog là Thành Nè, Thánh Né... là một coder cùi bắp (Code quèn). Chẳng giỏi viết lách, chỉ giỏi chém gió và có sở thích chia sẻ những kiến thức tôi đã từng...