2014-02-26 131 views
1

我想了解PHP中字符串的真实性。我认为它可能像Javascript或Python等其他脚本语言。PHP字符串的布尔值

> 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); 

咦?!?我真的很困惑,并想知道是什么使字符串真实或不真实。

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

+0

http://www.php.net/manual/en/language.types.boolean.php#112190 –

回答

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

booleans php documentation

当转换为布尔值,下面的值被认为是FALSE:

布尔值FALSE
整数0(零)
浮子0.0(零)
空字符串和字符串“0”
具有零元素的数组
(仅适用于PHP 4)零个成员变量的对象
特殊类型NULL(包括尚未设定的变量)的空标签

所以,是的,你的例子有意识创造
的SimpleXML对象,0是一个布尔值false而00是一个字符串,是真的