0 === false 返回 false,因为 0 是整型而 false 是布尔型,严格相等要求值和类型均相同。0 == false 为 true(类型转换后相等),而 === 不转换类型,直接判否。

PHP中0 === false为什么返回false
因为===是严格相等运算符,它要求**值和类型都完全相同**。0是整型(int),false是布尔型(bool),类型不同,直接判定为不等。
==和===在0与false比较时的区别
这是最容易混淆的点:松散比较==会触发类型转换,而严格比较不会。
-
0 == false→true(PHP把0转成bool后是false) -
0 === false→false(int≠bool,不转换,直接判否) - 同理:
'' == false是true,但'' === false是false
哪些值用== false会意外为true
松散比较下,多个“falsy”值都会被当作false,但它们类型各不相同——这正是===存在的意义。
-
0(int) -
0.0(float) -
''(string) -
[](空数组,PHP 7.4+) -
null(null)
如果你只关心“是否为布尔false”,必须用===;如果想检测“是否为任意falsy值”,才考虑==或更明确的!$var。
实际编码中怎么避免踩坑
多数时候你并不真的需要判断“是不是false”,而是想确认“有没有值”或“是否执行失败”。直接比false容易误伤。
- 函数返回
false表示失败(如fopen()、strpos())?用=== false——因为0可能是合法结果(比如strpos('abc', 'a')返回0) - 检查变量是否为空?优先用
empty($var)或!$var,而不是$var == false - 明确要区分
0和false时,永远用===,并补上类型注释,比如// $result is bool, not int
类型混用不是bug,是PHP的设计选择;但依赖隐式转换写逻辑,才是bug温床。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











