会有什么理由if ($str == "")
不if (empty($str))
产生相同的输出吗?
问问题
172 次
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" + 2
给3
. 这就是为什么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
。
于 2012-09-30T05:45:53.110 回答
1
empty
与== false
(不为不存在的变量引发错误)相同。如果您参考类型比较表,您会看到"0"
并array()
进行不同的比较。
于 2012-09-30T05:44:05.347 回答