2012-09-30 71 views
-1

会不会有任何理由if ($str == "")if (empty($str))不会产生相同的输出?

+0

它们根本不产生输出。他们是条件。 – think123

+0

@ think123 - 它们会产生输出,布尔输出。 – TCS

+0

是的,但它们被放在if语句中,所以不会有任何直接的“输出”。我可以理解你来自哪里。 – think123

回答

4

$str == ""返回TRUE为

  • $str = "";
  • $str = false;
  • $str = NULL;
  • $str = 0;
  • $str = 0.0;

$str == ""将返回FALSE为

  • $str = "0";
  • $str = array();

注:这也将返回TRUE一个未定义的变量,但它是一个警告。

在另一方面empty($str)将是TRUE以上所有情况下(包括未定义的变量),没有警告。

至于这种差异的原因,这是因为功能empty旨在测试一个emtpy变量(任何类型,例如一个数组或数字*)不仅是一个空字符串。

*:现在您可能已经开始使用PHP存储在字符串中的数字了,它只会根据需要转换该值,例如echo "1" + 2给出3。这就是为什么empty($str)$str = "0"返回TRUE,不是因为它是一个空字符串(不是),而是因为它是一个空数字。

为了测试字符串是否为空,我强烈推荐使用$str === ''strlen($str) === 0

2

$str = "0"; 例如。请参阅this罚款文件。

1

empty相同== false(且无需增加对于不存在变量的误差)。如果你指的是Type Comparison Tables,你会看到"0"array()将比较不同。

2

$str == ""将除外的$ str中的下列值的所有empty($str)为真:

  • "0"(0作为字符串)
  • array()(空数组)
+3

'==“”'对于其他许多情况也是如此! – deceze

+0

拼写更多:这个答案是错误的!试着证明第一句话。 – deceze

+0

这仍然是错误的。例如'0 ==“”''是'true'。 – deceze

相关问题