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 字符串的布尔值的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP GET 传递布尔值

Php fetch 返回字符串而不是布尔“真/假”值

将布尔值转换为整数值php

php 02

php变量的数据类型

PHP手册-语言参考-类型-Boolean 布尔类型