常用知识 - 判断变量是否存在 ¶
作者: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这样看似小聪明的方法来进行检测