PHP中字符串“0”的比较

时间:2014-02-15 09:40:13

标签: php

考虑php中的两个问题:

$x = "0"; if($x){// do something}

$x = "1"; if($x){ ... }

此处$x="0"会在比较时将值返回为false,而$x="1"的赋值将返回true。为什么会这样?

2 个答案:

答案 0 :(得分:3)

就像那样,因为它是用documentation写的:

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

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

您的案例是字符串" 0"。

大多数情况下,如果你有一个奇怪的行为,首先要做的是文档和阅读所有内容,之后检查一个类似名称的错误报告。在此之后,在stackoverflow上询问或制作own bug report是有意义的。

答案 1 :(得分:2)

请看这里:http://www.php.net/manual/en/language.types.boolean.php

  

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

     

[...]

     

空字符串,字符串“0”