我试图理解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);
咦?!?我真的很困惑,想知道是什么让一个字符串变得真实。
到目前为止我找不到任何东西。
答案 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)
转换为布尔值时,以下值被视为FALSE:
布尔值FALSE本身
整数0(零)
浮点数0.0(零)
空字符串,字符串“0”
一个零元素的数组
一个零成员变量的对象(仅限PHP 4)
特殊类型NULL(包括未设置变量)
从空标签创建的SimpleXML对象
所以是的,你的例子有道理,0
是一个布尔值假,而00
是一个字符串并且是真的