Menu
CoddyTech

相等与同一性

本课属于 Coddy PHP 学习旅程的“基础知识”单元。第 24 课,共 71 课。

PHP 提供了两种检查值是否相等的方式:相等运算符(==)和全等运算符(===)。理解它们的区别对于编写可靠的代码至关重要。

相等运算符(==)会在将值转换为相同类型后进行比较。这称为“宽松比较”:

<?php
var_dump(5 == "5");    // bool(true):字符串转换为数字
var_dump(0 == false);  // bool(true):0 转换为 false
var_dump(1 == true);   // bool(true):1 转换为 true
?>

恒等运算符(===)会同时比较值和类型。不会进行转换,因此两者必须完全匹配:

<?php
var_dump(5 === "5");   // bool(false):int 与 string 比较
var_dump(5 === 5);     // bool(true):类型和值都相同
var_dump(0 === false); // bool(false):int 与 bool 比较
?>

进行“不等于”比较时,使用 !=(宽松比较)或 !==(严格比较):

<?php
var_dump(5 != "5");    // bool(false):值相等
var_dump(5 !== "5");   // bool(true):类型不同
?>

作为最佳实践,优先使用 === 和 !==,以避免意外的类型转换问题。

challenge icon

挑战

简单

从输入中读取两个值:一个数字(作为字符串)和一个整数。

使用相等运算符和恒等运算符进行以下比较,并使用 var_dump() 输出每次比较的结果,每个结果占一行:

  1. 使用宽松比较检查字符串值是否等于整数(==)
  2. 使用严格比较检查字符串值是否等于整数(===)
  3. 使用宽松比较检查字符串值是否不等于整数(!=)
  4. 使用严格比较检查字符串值是否不等于整数(!==)

注意:第一个值保持为字符串(不要进行类型转换)。将第二个值转换为整数。

示例:

如果输入是 42 和 42,输出应为:

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

说明:

  • "42" == 42 为真(类型转换后值相等)
  • "42" === 42 为假(字符串与整数类型不同)
  • "42" != 42 为假(值相等)
  • "42" !== 42 为真(类型不同)

亲手试试

<?php
// 读取输入
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: 在下方编写你的代码
// 使用 var_dump() 将每次比较的结果分别输出在新的一行:
// 1. 宽松相等(==)
// 2. 严格相等(===)
// 3. 宽松不等(!=)
// 4. 严格不等(!==)

?>
quiz icon自我测试

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

基础知识中的所有课

自己练习: PHP 在线编译器