PHP 中 if($args) 与 if(!empty($args)) 的区别

发布于 2022-09-04 01:29:58 字数 155 浏览 17 评论 0

在编码的时候经常有个困惑,判断一个变量非空:
方式1:if($args){...do something..}
方式2:if(!empty($args)) {...do something...}

这两种方式的效果一样吗,在执行效率上哪种更好一些?
多谢解答!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

逆光下的微笑 2022-09-11 01:29:58

不一样,如果$args == 0,那$args == false

大多数情况下!empty会更安全,它可以把unset变量作为参数的情况下也不会报错,例如:

if($args[2] == 1) {}

如果数组不存在元素2就会报错。应该这样写

if(!empty($args[2]) && $args[2] == 1) {}
活泼老夫 2022-09-11 01:29:58

第一种方法在$args未定义的情况下会出现警告,在PHP中出现任何Error都会造成不小的性能损失,这主要是因PHP存在错误处理机制造成的。

第二种方法下empty能够处理未定义的参数,可以避免警告。另外empty是指令而非函数,运行效率并不会比第一种慢太多。

简而言之,如果你能保证$args已经定义,大可使用第一种。如果不行,则建议使用第二种。

终弃我 2022-09-11 01:29:58
  • 方式1: 涉及了类型转换吧

  • 方式2:empty判断非空值,空值包括

int 0
float 0.0
string '0'
string ''
array array()
boolean false
NULL
$var(一个定义了但为空值的变量)
压抑⊿情绪 2022-09-11 01:29:58

关键在与if() 和empty()的判断。
copy写的日志吧 ,不过只有if的:

布尔值FALSE身.
整形值0.
浮点类型0.0
空字符串'',以及字符串'0';//这里是重点
不包含任何元素的数组.
不包含任何成员的对象.(仅php 4.0)
特殊类型NULL
其他任何类型的数据都被默认为TRUE(包括资源类型)
-1也为TRUE(无论正负)

这是if的判断结果,empty的话,看文档吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文