天天看点

isset($var)、empty($var)、($var)之间的区别issetempty直接判断

php内置了很多对变量进行判断的方式,有几种常用的方式的判断结果容易混淆

isset

isset是当且仅当变量为NULL才会返回false,否则返回true,与is_null()完全相反
有三种情况下变量为NULL
    1. 赋值为NULL
    2. 未被赋值
    3. unset()
           

isset和is_null还是有区别的:isset是语句,is_null是函数,有关语句和函数的区别会另外介绍

empty

empty对以下几个特殊值的判断结果:
    1. 数值型(int,float)0 返回true,非0返回false
    2. String '' 返回true(注意'0'同样返回true)
    3. 布尔类型false 返回true
    4. 空数组[]返回true, [[]]返回false
    5. NULL返回true
           

直接判断

所谓直接判断就是类似于这样if($var)
这种判断方式在判断时会将变量$var强制转换为布尔型,所以只要参照强制转换的结果就行了
    1. ''   => false
    2. '0'  => false  
    3. 0    => false
    4. null => false
    5. []   => false 

需要注意的是:直接判断时,若变量未定义,会报一个notice的错误
    php记录notice也是需要消耗性能的,所以不推荐这样的用法