逻辑运算符第 2 部分
本课属于 Coddy PHP 学习旅程的“基础知识”单元。第 26 课,共 71 课。
NOT 运算符(!)会将布尔值变为相反的值。如果某个值是 true,它就会变成 false,反之亦然:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>你可以在一个表达式中组合多个逻辑运算符。这样做时,用括号让你的意图更清楚:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// 满足以下条件即可进入:有票,并且(已成年或是 VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>不加括号时,&& 的计算优先级高于 ||。不过,使用括号能让代码更容易阅读,也能避免错误。组合运算符时,始终按照逻辑对条件分组,准确表达你的意思。
挑战
简单从输入中读取 4 个值:一个整数 temperature,一个字符串 isRaining(值为 "true" 或 "false"),一个字符串 hasUmbrella(值为 "true" 或 "false"),以及一个字符串 hasRaincoat(值为 "true" 或 "false")。
将字符串值与 "true" 进行比较,把它们转换为布尔值。
计算以下 3 个条件,并使用 var_dump() 打印每个条件的结果,每个结果占一行:
- 检查是否没有下雨(使用
!运算符) - 检查这个人是否应该待在室内:正在下雨,并且既没有雨伞也没有雨衣(对这两件物品都使用
!) - 检查这个人是否可以舒适地外出:温度至少为 15,并且(没有下雨,或者有雨伞或雨衣)
示例:
如果输入为 20、true、false 和 true,输出应为:
bool(false)
bool(false)
bool(true)解释:
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → true
亲手试试
<?php
// 读取输入值
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));
// TODO:通过与 "true" 比较,将字符串值转换为布尔值
// TODO:使用 var_dump() 判断并输出以下三个条件:
// 1. 检查是否没下雨
// 2. 检查这个人是否应该待在室内(下雨、没带伞且没穿雨衣)
// 3. 检查这个人能否舒适地外出
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器