场景
这两个函数我们利用频率是很高的,常日用于判断数组的元素是否存在或者变量是否存在,但是两个函数的判断条件是有差异的,利用不当随意马虎导致一些问题。
语法

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 由于已经声明并且不是nullvar_dump(empty($a)); // true ''这里被处理为空$a = null;var_dump(isset($a)); //false 确实是nullvar_dump(empty($a)); // true
数组元素是否存在$a = ['name' => ''];var_dump(isset($a['name'])); // truevar_dump(empty($a['name'])); // true// 可以选择!empty来验证这样更严格$a = ['name' => ''];if (isset($a['name'])) { echo 'name' . $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