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

在编码的时候经常有个困惑,判断一个变量非空:

方式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的话,看文档吧。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值