![](/img/trans.png)
[英]if($val) vs. if($val != “”) vs. if(!empty($val)) — which one?
[英]PHP: if (!$val) VS if (empty($val)). Is there any difference?
我想知道下面两个案例有什么不同,推荐哪一个?
$val = 0;
if (!$val) {
//True
}
if (empty($val) {
//It's also True
}
看看PHP类型比较表 。
如果你查看表格,你会发现,对于所有情况, empty($x)
与!$x
相同。 所以它归结为处理未初始化的变量。 !$x
创建一个E_NOTICE
,而empty($x)
则不创建。
如果您使用空并且从未设置/创建变量,则不会抛出警告/错误。
让我们看看:
以下内容被认为是
empty
:
""
(空字符串)0
(0
为整数)0.0
(0
作为浮点数)"0"
(0
作为字符串)NULL
FALSE
array()
(一个空数组)var $var;
(声明的变量,但在类中没有值)
布尔文档 :
转换为布尔值时,以下值被视为
FALSE
:
- 布尔值
FALSE
本身- 整数
0
(零)- 浮点数
0.0
(零)- 空字符串,字符串
"0"
- 一个零元素的数组
- 一个零成员变量的对象(仅限PHP 4)
- 特殊类型
NULL
(包括未设置的变量)- 从空标签创建的
SimpleXML
对象
似乎唯一的区别(关于结果值)是如何处理SimpleXML
实例。 其他所有东西似乎都给出了相同的结果(如果你当然反转了boolean强制转换)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.