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.
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:
- Kiểm tra xem trời KHÔNG mưa hay không (dùng toán tử
!) - 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 đồ) - 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 → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 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
?>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