如果条件合并两个

时间:2014-08-21 11:55:34

标签: php

我必须为admin实现一些功能。为此,我要检查会话是否设置为admin。

我使用了两个嵌套的if语句来检查会话变量,

session_start();
if(isset($_SESSION['user_type']))
{
    if($_SESSION['user_type']== 'admin')
    {
          //functionality
    }
}

我对上面的代码没有问题。它工作正常。但我想知道是否有任何方法可以在单个if语句中编写上述逻辑。

如果我写

if(isset($_SESSION['user_type']) && $_SESSION['user_type']== 'admin')

if(isset($_SESSION['user_type']) == 'admin')

如果未设置$_SESSION['user_type'],则会出错。

有什么办法吗?请帮忙

2 个答案:

答案 0 :(得分:2)

你所写的内容可以正常使用:

if(isset($_SESSION['user_type']) && $_SESSION['user_type']== 'admin')

PHP在评估布尔表达式时使用short-circuit evaluation,因此只有在$_SESSION['user_type']== 'admin'返回isset($_SESSION['user_type'])时才会评估true,从而防止抛出错误。

值得一提的是,isset只有在数组中存在键并且其值不是null时才会返回true,而array_key_exists('user_type', $_SESSION)如果密钥存在,将返回true,无论其值如何。

在这种情况下,它并不重要,但供将来参考!

答案 1 :(得分:-3)

我删除了一些小错误,请尝试这个:

if(isset($_SESSION['user_type']) && $_SESSION['user_type'] === 'admin') {