为什么“someString”== 0在PHP中评估为true

时间:2013-12-17 16:28:34

标签: php

我对PHP中的truth感到有点困惑。

我的理解是0计算为false,非空字符串(除非字符串为“0”)计算为true。

这正如我所料:

var_dump((bool) 0);              // prints "boolean false"
var_dump((bool) 'someString');   // prints "boolean true"

但后来我对以下结果感到惊讶:

var_dump((0=='someString'));     // prints "boolean true"

我的问题是,为什么0=='someString'评估为真?

1 个答案:

答案 0 :(得分:8)

使用比较(==)时,与另一个整数相比,运算符字符串将转换为整数。这是因为type juggling in PHP。所以"someString"求值为零,因为它被转换为整数并且没有前导数字。如果您使用相同的运算符(===)类型转换未执行,那么"someString"将被视为文字字符串,然后您的语句将评估为false。

执行类型杂耍时,以下内容将评估为false。其他所有内容都将被评估为真:

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • “0”(0作为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • $变种; (声明的变量,但没有值)