2014-02-26 86 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是一個字符串,是真的