Menu
CoddyTech

逻辑运算符第 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)
?>

不加括号时,&& 的计算优先级高于 ||。不过,使用括号能让代码更容易阅读,也能避免错误。组合运算符时,始终按照逻辑对条件分组,准确表达你的意思。

challenge icon

挑战

简单

从输入中读取 4 个值:一个整数 temperature,一个字符串 isRaining(值为 "true" 或 "false"),一个字符串 hasUmbrella(值为 "true" 或 "false"),以及一个字符串 hasRaincoat(值为 "true" 或 "false")。

将字符串值与 "true" 进行比较,把它们转换为布尔值。

计算以下 3 个条件,并使用 var_dump() 打印每个条件的结果,每个结果占一行:

  1. 检查是否没有下雨(使用 ! 运算符)
  2. 检查这个人是否应该待在室内:正在下雨,并且既没有雨伞也没有雨衣(对这两件物品都使用 !)
  3. 检查这个人是否可以舒适地外出:温度至少为 15,并且(没有下雨,或者有雨伞或雨衣)

示例:

如果输入为 20、true、false 和 true,输出应为:

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

解释:

  • !isRaining → !true → false
  • isRaining && !hasUmbrella && !hasRaincoat → true && true && false → false
  • temperature >= 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. 检查这个人能否舒适地外出

?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: PHP 在线编译器