繁体   English   中英

PHP:if(!$ val)VS if(empty($ val))。 有什么区别吗?

[英]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文档:

以下内容被认为是empty

  • "" (空字符串)
  • 00为整数)
  • 0.00作为浮点数)
  • "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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM