PHP 字符串的布尔值
Posted
技术标签:
【中文标题】PHP 字符串的布尔值【英文标题】:Boolean values of PHP strings 【发布时间】:2014-03-30 03:26:43 【问题描述】:我试图了解 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);
啊?!?我真的很困惑,想知道是什么让字符串为真。
到目前为止,我还没有找到任何东西。
【问题讨论】:
php.net/manual/en/language.types.boolean.php#112190 【参考方案1】:来自booleans php documentation
当转换为布尔值时,以下值被视为 FALSE:
布尔值 FALSE 本身 整数 0(零) 浮点数 0.0(零) 空字符串和字符串“0” 一个元素为零的数组 具有零成员变量的对象(仅限 PHP 4) 特殊类型 NULL(包括未设置的变量) 从空标签创建的 SimpleXML 对象
所以是的,你的例子有道理,0
是布尔值 false 而 00
是字符串并且是 true
【讨论】:
【参考方案2】:请参阅converting to boolean 的文档:
转换为布尔值时,会考虑以下值 错误:
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(包括任何资源)。
【讨论】:
以上是关于PHP 字符串的布尔值的主要内容,如果未能解决你的问题,请参考以下文章