涉及到判断时,经常是凭感觉或者经验,稍微总结下几个常用的方法及判断方式。参考了这两篇博客,并总结了下。
参考一
参考二
话不多说,先上代码
$a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();
- isset
echo '=========isset=============';
var_dump(isset($a)); // $a
var_dump(isset($b)); // $b = false
var_dump(isset($c)); // $c = '';
var_dump(isset($d)); // $d = 0
var_dump(isset($e)); // $e = null
var_dump(isset($f)); // $f = array();
结果
- is_null
echo '=========is_null=============';
var_dump(is_null($a)); // $a
var_dump(is_null($b)); // $b = false
var_dump(is_null($c)); // $c = '';
var_dump(is_null($d)); // $d = 0
var_dump(is_null($e)); // $e = null
var_dump(is_null($f)); // $f = array();
结果:警告忽略不讨论,以下都一样
- empty
echo '=========empty=============';
var_dump(empty($a)); // $a
var_dump(empty($b)); // $b = false
var_dump(empty($c)); // $c = '';
var_dump(empty($d)); // $d = 0
var_dump(empty($e)); // $e = null
var_dump(empty($f)); // $f = array();
结果
- !!
echo '========= !! =============';
var_dump(!!$a); // $a
var_dump(!!$b); // $b = false
var_dump(!!$c); // $c = '';
var_dump(!!$d); // $d = 0;
var_dump(!!$e); // $e = null;
var_dump(!!$f); // $f = array();
结果
- 是否==null
echo '========= 是否等于null =============';
var_dump($a==null); // $a
var_dump($b==null); // $b = false
var_dump($c==null); // $c = '';
var_dump($d==null); // $d = 0;
var_dump($e==null); // $e = null;
var_dump($f==null); // $f = array();
结果
- 是否等于0
echo '========= 是否等于0 =============';
var_dump($a==0); // $a
var_dump($b==0); // $b = false
var_dump($c==0); // $c = '';
var_dump($d==0); // $d = 0;
var_dump($e==0); // $e = null;
var_dump($f==0); // $f = array();
结果
各情况结果如图
类别 | isset | is_null | empty | !! | ==null | ==0 |
---|---|---|---|---|---|---|
$a | false | true | true | false | true | true |
$b = false | true | false | true | false | true | true |
$c = ”; | true | false | true | false | true | true |
$d = 0; | true | false | true | false | true | true |
$e = null; | false | true | true | false | true | true |
$f = array(); | true | false | true | false | true | false |
总结
- isset判断是否已经存在,只有未做赋值操作或者值为null的才返回 false
- is_null的判断依据与isset相同,但是返回值相反
- empty判断是否为空,两种情况下返回true,第一,不存在的一定为空(即isset返回为false的),包括 $a; $e=null;第二,存在的,但是值为空的,$b = false;$c =”; $d = 0;$f = array();
- !!与empty情况一致,返回结果相反
- 是否==null 与empty情况一致
- 是否==0,除去数组情况外,对无声明,整型和字符串的判断 与 empty相同
注意
对涉及到整型的判断时,要单独查看0的情况