20-1
约 491 字大约 2 分钟
2025-11-02
=== 和 == 的区别
== (相等运算符)
== 运算符只比较值是否相等。如果两个变量的值相同,即使它们的数据类型不同,== 也会返回 true。在比较之前,PHP 会尝试将一个变量的类型转换成另一个变量的类型,以便进行比较。这种行为被称为**“类型转换”或“弱类型比较”**
示例:
// 字符串 '10' 和整数 10
var_dump('10' == 10); // true,因为 '10' 会被转换为整数 10
// 字符串 'Hello' 和整数 0
var_dump('Hello' == 0); // true,因为 'Hello' 在数字比较时被转换为 0
// 字符串 '10abc' 和整数 10
var_dump('10abc' == 10); // true,因为 '10abc' 的起始数字部分被转换为 10
// null 和 false
var_dump(null == false); // true,因为 null 在布尔比较时被视为 false=== (全等运算符)
=== 运算符不仅比较值是否相等,还比较数据类型是否相同。只有当两个变量的值和数据类型都完全相同时,=== 才会返回 true。这种行为被称为**“不进行类型转换的比较”或“强类型比较”**
示例:
// 字符串 '10' 和整数 10
var_dump('10' === 10); // false,因为一个变量是字符串,另一个是整数
// 字符串 'Hello' 和整数 0
var_dump('Hello' === 0); // false,因为数据类型不匹配
// 字符串 '10abc' 和整数 10
var_dump('10abc' === 10); // false,因为数据类型不匹配
// null 和 false
var_dump(null === false); // false,因为 null 和 false 的数据类型不同| 运算符 | 比较内容 | 行为 | 什么时候用? |
|---|---|---|---|
| == | 值 | 弱类型比较(有类型转换) | 当你确定不需要关心变量类型,只关心值是否相同时。 |
| === | 值和类型 | 强类型比较(无类型转换) | 大多数情况下,推荐使用 ===,因为它能防止因隐式类型转换导致的意外行为,使代码更健壮和可预测。 |