PHP中布尔值真假问题

要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE

  • 布尔值 FALSE 自身
  • 整型值 0 (零)
  • 浮点型值0.0 (零)
  • 空 字符串, 以及字符串 “0”
  • 不包括任何元素的数组
  • 不包括任何成员变量的对象(仅PHP 4.0 适用)
  • 特殊类型 NULL (包括尚未设定的变量)
  • 从没有任何标记(tags)的XML文档生成的SimpleXML 对象
    所有其它值都被认为是 TRUE(包括任何资源)。

_-1_ 和其它非零值(不论正负)一样,被认为是 TRUE

1
2
3
4
5
6
7
8
var_dump((bool) “”); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) “foo”); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) “false”); // bool(true)

这里要注意的一个地方是上述”false”是字符串,而非布尔值false。如果是false的话。肯定返回假。

另外空字符串不包括‘ ’,即有空格的情况下,也算为真。

坚持原创技术分享,您的支持将鼓励我继续创作!