You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中false与0相等但与"00"不等的原因咨询

PHP松散比较中"000000000000" == false返回false的原因

PHP的松散比较(==)会自动转换操作数的类型后再比较,核心规则和你的测试代码拆解如下:

核心类型转换规则

  • 当布尔值与其他类型比较时,另一个操作数会被转换为布尔值:
    • 布尔值转换规则:空字符串""、字符串"0"会转为false;所有非空且非"0"的字符串,都会转为true。
  • 当字符串与数值比较时,字符串会被转换为数值:
    • 字符串开头的数字部分会被解析为数值,纯数字组成的字符串(比如"0"、"000000")会转为对应的数值0。

逐个解析测试代码

  1. echo (0 == false); //->true
    布尔值false转为数值0,0 == 0结果为true。

  2. echo ("0" == false); //->true
    字符串"0"转为布尔值false,false == false结果为true。

  3. echo ("0" == 0); //->true
    字符串"0"转为数值0,0 == 0结果为true。

  4. echo ("000000000000" == 0); //->true
    字符串"000000000000"转为数值0,0 == 0结果为true。

  5. echo ("000000000000" == false); //->false
    字符串"000000000000"既不是空字符串,也不是单个"0",转为布尔值true,true == false结果为false。

内容的提问来源于stack exchange,提问作者Nicolas Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:07:10