1

我试图了解 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);

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

到目前为止,我还没有找到任何东西。

4

2 回答 2

2

请参阅转换为 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(包括任何资源)。

于 2014-02-26T23:47:58.067 回答
1

来自布尔 php 文档

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

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

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

于 2014-02-26T23:48:17.110 回答