Menu
CoddyTech

Toán tử logic phần 2

Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 26 trên 71.

Toán tử NOT (!) đảo giá trị boolean sang giá trị ngược lại. Nếu một giá trị là true, nó sẽ trở thành false, và ngược lại:

<?php
$isLoggedIn = false;

$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

Bạn có thể kết hợp nhiều toán tử logic trong một biểu thức. Khi làm vậy, hãy dùng dấu ngoặc đơn để thể hiện rõ ý định của bạn:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// Có thể vào nếu: có vé VÀ (đã trưởng thành HOẶC là VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

Khi không có dấu ngoặc đơn, && được tính trước ||. Tuy nhiên, dùng dấu ngoặc đơn giúp bạn đọc code dễ hơn và tránh mắc lỗi. Khi kết hợp các toán tử, hãy luôn nhóm các điều kiện theo logic để diễn đạt chính xác ý bạn.

challenge icon

Thử thách

Dễ

Đọc bốn giá trị từ đầu vào: một số nguyên temperature, một chuỗi isRaining (có giá trị "true" hoặc "false"), một chuỗi hasUmbrella (có giá trị "true" hoặc "false") và một chuỗi hasRaincoat (có giá trị "true" hoặc "false").

Chuyển các giá trị chuỗi thành giá trị boolean bằng cách so sánh chúng với "true".

Đánh giá ba điều kiện sau và in kết quả của từng điều kiện bằng var_dump(), mỗi kết quả trên một dòng mới:

  1. Kiểm tra xem trời KHÔNG mưa hay không (dùng toán tử !)
  2. Kiểm tra xem người đó có nên ở trong nhà hay không: trời mưa VÀ họ không có ô cũng không có áo mưa (dùng ! với cả hai món đồ)
  3. Kiểm tra xem người đó có thể thoải mái ra ngoài hay không: nhiệt độ ít nhất là 15 VÀ (trời không mưa HOẶC họ có ô hoặc áo mưa)

Ví dụ:

Nếu đầu vào là 20, true, false và true, đầu ra sẽ là:

bool(false)
bool(false)
bool(true)

Giải thích:

  • !isRaining → !true → false
  • isRaining && !hasUmbrella && !hasRaincoat → true && true && false → false
  • temperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat) → true && (false || false || true) → true && true → true

Tự làm thử

<?php
// Đọc các giá trị đầu vào
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));

// TODO: Chuyển các giá trị chuỗi thành giá trị boolean bằng cách so sánh với "true"


// TODO: Kiểm tra và in ra ba điều kiện bằng var_dump():
// 1. Kiểm tra xem trời có KHÔNG mưa hay không
// 2. Kiểm tra xem người đó có nên ở trong nhà không (trời mưa VÀ không có ô VÀ không có áo mưa)
// 3. Kiểm tra xem người đó có thể ra ngoài thoải mái không

?>
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