常用知识 - 判断变量是否存在

  • 作者:KK

  • 发表日期:2016.9.15


通常大家都用isset($var)来判断一个变量是否存在,这经常出现在视图模板中

但其实这里有个小坑,虽然不经常踩,然而一旦发生就很可能会让页面出现BUG了:

$a = null;
var_dump(isset($a)); //false

建议用array_key_exists判断

$a = null;
$varExists = array_key_exists('a', get_defined_vars());

if($varExists){
	echo '变量a是存在的';
}

不过前提也是要搞清楚自己的逻辑在值为null的时候是否要依然进行,是的话就这样吧


数组的key判断也是

$b = ['key' => null];
if(isset($b['key'])){
	//不会进来
	echo 'isset';
}

if(array_key_exists('key', $b)){
	//会进来
	echo 'array_key_exists';
}

所以如果要严格地判断一个key是否存在,用array_key_exists

顺便总结一个经验:一个东西被设计用于干什么的,那尽量用它来做这种事情,array_key_exists设计是为了检测数组是否存在指定的key,就不要随便用isset这样看似小聪明的方法来进行检测