更好的方法是设置isset($ variable)并检查变量值

时间:2013-03-12 15:26:42

标签: php

我想知道是否有比我常常做的更好的方法来检查可能未设置的变量的值?例如:

if(isset($_SESSION['super_user']) && $_SESSION['super_user'] == true) {
  echo 'hi super user';
}

这样做会简单得多:

if($_SESSION['super_user']) {
  echo 'hi super user';
}

但我最后会发现未定义索引的通知。有没有其他方式进行这种简单的验证,或者我必须坚持我的实际做法?

由于

3 个答案:

答案 0 :(得分:1)

if (!empty($_SESSION['super_user'])) {
    // ...
}

答案 1 :(得分:0)

如果用户是超级用户,您最初可以将$_SESSION['super_user']设置为false并仅将其设置为true。然后,您始终可以使用if ($_SESSION['super_user']) {}

答案 2 :(得分:0)

对于特定示例,您当前的代码可以缩短为

if(!empty($_SESSION['super_user']))
然而,正确的方法是

if ($_SESSION['role'] == 'super_user')
  

我想知道是否有比我常常做的更好的方法来检查可能未设置的变量的值?

是。始终定义所有变量。就像我上面发布的一样。始终为所有用户提供role元素,并且无需检查它是否存在。