内容来自 DOC[ https://q.houxu6.top/?s=PHP 中的相等性比较运算符(== 双等号)和恒等性比较运算符(=== 三等号)有什么区别?
](https://q.houxu6.top/?s=PHP 中的相等性比较运算符(%3D%3D 双等号)和恒等性比较运算符(%3D%3D%3D 三等号)有什么区别? )
==
和 ===
之间有什么区别?
- 宽松的
==
比较如何工作? - 严格的
===
比较如何工作?
有哪些有用的示例呢?
==
和 ===
的区别
松散相等运算符 ==
和严格相等运算符 ===
的区别在 手册 中有明确解释:
比较运算符
示例 | 名称 | 结果 |
---|---|---|
$a == $b | 相等 | 如果在类型转换后 $a 等于 $b,则返回 TRUE。 |
$a === $b | 严格相等 | 如果 $a 等于 $b 并且它们的类型相同,则返回 TRUE。 |
松散相等比较 ==
如果你使用 ==
运算符或其他使用松散比较的运算符,比如 !=
、<>
或 ==
,你必须始终关注上下文来确定何时以及为什么会发生转换,以理解正在发生的事情。
转换规则
类型比较表格
你可以参考并查看手册中的比较表格:链接
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE |
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE |
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE |
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | TRUE |
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | FALSE |
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE |
严格相等比较 ===
如果你使用 ===
运算符或其他使用严格比较的运算符,比如 !==
或 ===
,你可以始终确保类型不会发生神奇转换,因为不会进行转换。因此,对于严格比较,类型和值必须完全相同,不仅仅是值。
类型比较表格
你可以参考并查看手册中的比较表格:链接
使用 ===
的严格比较
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | 真 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 |
FALSE | 假 | 真 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 |
1 | 假 | 假 | 真 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 |
0 | 假 | 假 | 假 | 真 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 |
-1 | 假 | 假 | 假 | 假 | 真 | 假 | 假 | 假 | 假 | 假 | 假 | 假 |
"1" | 假 | 假 | 假 | 假 | 假 | 真 | 假 | 假 | 假 | 假 | 假 | 假 |
"0" | 假 | 假 | 假 | 假 | 假 | 假 | 真 | 假 | 假 | 假 | 假 | 假 |
"-1" | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 真 | 假 | 假 | 假 | 假 |
NULL | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 真 | 假 | 假 | 假 |
array() | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 真 | 假 | 假 |
"php" | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 真 | 假 |
"" | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 假 | 真 |