扫码关注官方订阅号
在编码的时候经常有个困惑,判断一个变量非空:方式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存在错误处理机制造成的。
$args
第二种方法下empty能够处理未定义的参数,可以避免警告。另外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中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不一样,如果$args == 0,那$args == false
大多数情况下!empty会更安全,它可以把unset变量作为参数的情况下也不会报错,例如:
如果数组不存在元素2就会报错。应该这样写
第一种方法在
$args未定义的情况下会出现警告,在PHP中出现任何Error都会造成不小的性能损失,这主要是因PHP存在错误处理机制造成的。第二种方法下
empty能够处理未定义的参数,可以避免警告。另外empty是指令而非函数,运行效率并不会比第一种慢太多。简而言之,如果你能保证
$args已经定义,大可使用第一种。如果不行,则建议使用第二种。方式1: 涉及了类型转换吧
方式2:empty判断非空值,空值包括
关键在与if() 和empty()的判断。
copy写的日志吧 ,不过只有if的:
这是if的判断结果,empty的话,看文档吧。