Toán tử ba ngôi
Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 30 trên 71.
Khi có một câu lệnh if-else đơn giản chỉ gán giá trị dựa trên một điều kiện, PHP cung cấp cách viết ngắn gọn hơn: toán tử ba ngôi.
Cú pháp dùng ? và : để tạo câu lệnh điều kiện gọn trên một dòng:
<?php
$age = 20;
// Dùng if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// Tương tự với toán tử ba ngôi
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>Cấu trúc là: condition ? value_if_true : value_if_false.
PHP đánh giá điều kiện trước. Nếu điều kiện đúng, biểu thức trả về giá trị sau ?. Nếu sai, biểu thức trả về giá trị sau :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>Toán tử ba ngôi (ternary operator) rất phù hợp để gán giá trị đơn giản theo kiểu chọn một trong hai. Với logic phức tạp hơn có nhiều điều kiện, hãy dùng câu lệnh if-elseif-else để code dễ đọc hơn.
Thử thách
DễĐọc hai số nguyên từ đầu vào: score và passingScore.
Dùng toán tử ba ngôi để xác định kết quả dựa trên các điều kiện sau:
- Nếu
scorelớn hơn hoặc bằngpassingScore, kết quả phải làPassed - Nếu không, kết quả phải là
Failed
In kết quả ở dòng đầu tiên.
Sau đó, đọc một số nguyên quantity từ đầu vào. Dùng toán tử ba ngôi để xác định thông báo giao hàng:
- Nếu
quantitylớn hơn 10, thông báo phải làFree shipping - Nếu không, thông báo phải là
Standard shipping
In thông báo giao hàng ở dòng thứ hai.
Ví dụ:
Nếu các đầu vào là 75, 60 và 15, đầu ra phải là:
Passed
Free shippingNếu các đầu vào là 45, 50 và 5, đầu ra phải là:
Failed
Standard shippingTự làm thử
<?php
// Đọc đầu vào
$score = intval(fgets(STDIN));
$passingScore = intval(fgets(STDIN));
$quantity = intval(fgets(STDIN));
// TODO: Viết code bên dưới
// Dùng toán tử ba ngôi để xác định điểm đạt hay không đạt
// Dùng toán tử ba ngôi để xác định thông báo vận chuyển
// In ra kết quả
echo $result . "\n";
echo $shippingMessage;
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
4Toán tử so sánh và logic
Toán tử so sánhBằng nhau và đồng nhấtToán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giản2Biến và kiểu dữ liệu
SốChuỗi và dấu ngoặc képGiá trị BooleanQuy ước đặt tênÔn tập: khởi tạo biếnBiến rỗngNối chuỗiNhận đầu vào từ người dùngChuyển đổi sang kiểu dữ liệu khác5Logic điều kiện
Câu lệnh ifIf và elseToán tử ba ngôiToán tử kết hợp nullCâu lệnh switchÔn tập: đưa ra quyết định3Các toán tử cơ bản
Toán tử số họcToán tử chia lấy dưToán tử lũy thừaPhép gán kết hợpTăng/giảmThứ tự ưu tiên của toán tửÔn tập: phép tính đơn giảnToán tử chuỗiTự luyện tập: Trình biên dịch PHP online