相等与同一性
本课属于 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):类型不同
?>作为最佳实践,优先使用 === 和 !==,以避免意外的类型转换问题。
挑战
简单从输入中读取两个值:一个数字(作为字符串)和一个整数。
使用相等运算符和恒等运算符进行以下比较,并使用 var_dump() 输出每次比较的结果,每个结果占一行:
- 使用宽松比较检查字符串值是否等于整数(
==) - 使用严格比较检查字符串值是否等于整数(
===) - 使用宽松比较检查字符串值是否不等于整数(
!=) - 使用严格比较检查字符串值是否不等于整数(
!==)
注意:第一个值保持为字符串(不要进行类型转换)。将第二个值转换为整数。
示例:
如果输入是 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. 严格不等(!==)
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器