Menu
CoddyTech

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.

challenge icon

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 score lớn hơn hoặc bằng passingScore, 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 quantity lớ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 shipping

Nếu các đầu vào là 45, 50 và 5, đầu ra phải là:

Failed
Standard shipping

Tự 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;
?>
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch PHP online