PHP字符串的布尔值

时间:2014-02-26 23:41:53

标签: php casting weak-typing

我试图理解PHP中字符串的真实性。我认为它可能像其他脚本语言,如Javascript或Python。

> var_dump((bool)"");
bool(false);

> var_dump((bool)"hello");
bool(true);

好的,有道理。

然后我试了

> var_dump((bool)"0");
bool(false);

真的?那真是怪了。我想PHP会先尝试将字符串解析为数字。所以这也应该是false

> var_dump((bool)"00");
bool(true);

咦?!?我真的很困惑,想知道是什么让一个字符串变得真实。

到目前为止我找不到任何东西。

2 个答案:

答案 0 :(得分:2)

请参阅converting to boolean的文档:

  

转换为布尔值时,会考虑以下值   FALSE:

the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tags
     

其他每个值都被视为TRUE(包括任何资源)。

答案 1 :(得分:1)

来自booleans php documentation

  

转换为布尔值时,以下值被视为FALSE:

     

布尔值FALSE本身
  整数0(零)
  浮点数0.0(零)
  空字符串,字符串“0”
  一个零元素的数组
  一个零成员变量的对象(仅限PHP 4)
  特殊类型NULL(包括未设置变量)
  从空标签创建的SimpleXML对象

所以是的,你的例子有道理,0是一个布尔值假,而00是一个字符串并且是真的