场景这两个函数我们使用频率是很高的,通常用于判断数组的元素是否存在或者变量是否存在,但是两个函数的判断条件是有区别的,使用不当容易导致一些问题语法isset ( mixed $var [, mixed $... ] ) : 。
bool 判断var是否声明&是否不等于null,这里如果声明了并且不是null就为true, 这里0,都算有值 empty ( mixed $var ) : bool 判断var是否是空(null)的,这里没值就是
true,如 0,,0,null,false, 0.0,[] 都是null使用变量是否存在 var_dump(isset($a)); //false 因为没有声明$a var_dump(empty($a));
// true $a = ; var_dump(isset($a)); // true 因为已经声明并且不是null var_dump(empty($a)); // true 这里被处理为空 $a =
null; var_dump(isset($a)); //false 确实是null var_dump(empty($a)); // true数组元素是否存在 $a = [name => ]; var_dump(
isset($a[name])); // true var_dump(empty($a[name])); // true// 可以选择!empty来验证这样更严格 $a = [name => ]; if
(isset($a[name])) { echoname . $a[name]; } else { echo"no"; } if (!empty($a[name])) { echo
name . $a[name]; } else { echo"no"; } // 关键一点一定不要直接去判断数组元素// 这样极容易导致undefined错误if ($a[name]) {
echo $a[name] } // PHP Notice: Undefined variable: a in
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。