PHP的 ?:,??,isset,empty都是什么意思
isset
检测变量是否已设置并且非 null,
isset ( mixed $var , mixed $... = ? ) : bool
如果一次传入多个参数,那么每个参数都会被执行 Isset 判断,从左至右,中途某个变量不通过则立即停止。
isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。
若想检测常量是否已设置,可使用 defined() 函数。
如果使用 isset() 来检查对象无法访问的属性,如果 __isset() 方法已经定义则会调用这个重载方法。
如果已经使用 unset()] 释放了一个变量之后,它将不再是 isset()。
未定义的变量不会报语法错误。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(isset($a)); // false var_dump(isset($b)); // true var_dump(isset($c)); // true var_dump(isset($c['name'])); // false var_dump(isset($d)); // false var_dump(isset($a, $b, $c, $d)); // false // var_dump(isset("abc")); // 语法错误 // var_dump(isset(tt())); // 语法错误 // var_dump(isset(MY_CONST)); // 语法错误
可安全的用于检查对象的对象的变量
// instead of writing isset($abc) && isset($abc->def) && isset($abc->def->ghi); // or in a shorter form isset($abc, $abc->def, $abc->def->ghi); // you can just write isset ($abc->def->ghi);
empty()
判断一个变量不存在,或为空。
empty ( mixed $var ) : bool
未定义的变量不会报语法错误。
参数不要求是变量。
empty() 本质上与 !isset($var) || $var == false 等价。
当var存在,并且是一个非空非零的值时返回 false 否则返回 true。
当对一个不可见的对象属性使用 empty() 时,__isset() 方法如果存在的话,它将会被调用。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(empty($a)); // true var_dump(empty($b)); // true var_dump(empty($c)); // true var_dump(empty($c['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误
!
判断是否为空。也可以判断是否存在,未定义的变量会报 PHP Notice,也不会报语法错误,不会终止程序。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(!$a); // true var_dump(!$b); // true var_dump(!$c); // true var_dump(!$c['name']); // true PHP Notice: Undefined index: name var_dump(!$d); // true PHP Notice: Undefined index: name var_dump(!("abc")); // false var_dump(!tt()); // true // var_dump(!MY_CONST); // 语法错误
?:
三目运算符的简写。
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
所以说它的判断依据依然是:判断是否为空。也可以判断是否存在,未定义的变量会报 PHP Notice,也不会报语法错误,不会终止程序。
??
$a ?? 10 等价于 isset($a) ? $a : 1
归纳
判断是否存在:isset, ??
判断不存在,或为空:empty()
判断是否为空,不建议用来判断是否存在:!, ?:
推荐学习:php视频教程
以上就是PHP的 ?:,??,isset,empty都是什么意思的详细内容,更多请关注其它相关文章!
上一篇: PHP保留两位小数的数字该如何输出
下一篇: 实例讲解jQuery与JS实现AJAX
推荐阅读
-
PHP5.5和之前的版本empty函数的不同之处
-
PHP中isset()和unset()函数的用法小结
-
php警告Creating default object from empty value 问题的解决方法
-
TGP英雄联盟中的甩锅局、浪输局等都是什么意思?
-
解析PHP中empty is_null和isset的测试
-
PHP中检查isset()和!empty()函数的必要性
-
PHP中空字符串介绍0、null、empty和false之间的关系
-
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
-
php empty()与isset()区别的详细介绍
-
PHP的isset(),is_null,empty()你了解了没?