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

阅读量:28
2021-04-18

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

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

回复内容:

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

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

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

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

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

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

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

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

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

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

  • 方式1: 涉及了类型转换吧

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

int 0
float 0.0
string '0'
string ''
array array()
boolean false
NULL
$var(一个定义了但为空值的变量)

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

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

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

声明:本文原创发布星网无限,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@处理

THE END

发表评论

相关推荐

  • 有关fgets()函数的文章推荐10篇

    以下正文:这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite()、fread()、fgets()、fgetc()、file()、readf ...

    阅读量:68
    2021-04-19
  • php递归与无限分类实例详解

    这篇文章主要介绍了php实现递归与无限分类的方法,涉及php的递归操作技巧,需要的朋友可以参考下本文实例讲述了php实现递归与 ...

    阅读量:47
    2021-04-19
  • CI框架中zip类的使用

    CI框架自带的zip类简单实用,本文就来简单说一下ci框架的zip类的使用,需要的朋友可以参考下CI框架自带的zip类简单实用,本文 ...

    阅读量:46
    2021-04-18
  • SWFUpload插件上传文件的代码

    这篇文章主要介绍了文件上传之SWFUpload插件(代码),实现此代码主要分为两部分:1.前台文件和 2.后台文件upload.php,需要 ...

    阅读量:46
    2021-04-18
  • 关于destoon的URL Rewrite设置方法

    这篇文章主要介绍了destoon的URL Rewrite(伪静态)设置方法,需要的朋友可以参考下1、如果您的服务器支持.htaccess,则无需设 ...

    阅读量:50
    2021-04-18