-1

会有什么理由if ($str == "")if (empty($str))产生相同的输出吗?

4

5 回答 5

4

$str == ""将返回 TRUE

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

$str == ""将返回 FALSE

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

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

另一方面empty($str),对于上述所有情况(包括未定义的变量)将为 TRUE,没有警告。

至于造成这种差异的原因,是因为该函数empty旨在测试空变量(任何类型,例如数组或数字*),而不仅仅是空字符串。

*:您现在可能对 PHP 对存储在字符串中的数字感到满意,它只会根据需要转换值,例如echo "1" + 23. 这就是为什么empty($str)在 时返回 TRUE的原因$str = "0",不是因为它是一个空字符串(不是),而是因为它是一个空数字。

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

于 2012-09-30T05:54:45.330 回答
2

$str = "0"; 例如。参考这个很好的文档。

于 2012-09-30T05:42:50.423 回答
2

$str == ""empty($str)除以下 $str 值外,其他所有值都为 true :

  • "0"(0 作为字符串)
  • array()(一个空数组)
于 2012-09-30T05:44:32.417 回答
2

是的。如果$str等于"0"thenempty($str)将返回TRUE,而$str == ""将返回FALSE

请参阅手册页:http ://www.php.net/manual/en/function.empty.php

于 2012-09-30T05:45:53.110 回答
1

empty== false(不为不存在的变量引发错误)相同。如果您参考类型比较表,您会看到"0"array()进行不同的比较。

于 2012-09-30T05:44:05.347 回答