float 0在php中作为空字符串返回

时间:2011-07-28 03:37:36

标签: php

任何人都可以解释为什么浮动0是空的?下面的代码将显示“怪异”

$empty = (float)"0";
if($empty == "")
  echo "weird";

另一方面,如果我使用下面的代码,它将永远不会显示“怪异”。

$empty = (float)"0.01";
if($empty == "")
  echo "weird";

3 个答案:

答案 0 :(得分:4)

这是因为在PHP中,以下表达式是正确的:

0 == ""
0.0 == ""

因为$empty这里是空字符串""

您可以使用===执行类型相等检查,并且这些表达式将按预期显示为false:

0 === ""
0.0 === ""

答案 1 :(得分:0)

这根本不奇怪,这是预期的。请记住,在PHP 0中评估为FALSE,空字符串也是如此。为了避免这种情况,使用===测试严格的相等性(a === b表示“a = = b并且我比较苹果与苹果”,而a == b表示“做这些事情有相同的价值?“(如果我比较苹果和山羊,这无关紧要))

试试这个:

$empty = (float)"0";
if($empty === "")
  echo "weird";

答案 2 :(得分:0)

因为这是PHP的松散比较。 http://php.net/manual/en/types.comparisons.php