PHP三元运算符(?)用于函数?

时间:2014-04-04 20:45:55

标签: php function operators ternary-operator

我想做一些非常简单的事情:

if (getStatus()) {
    require_once('a.php');
} else {
    require_once('b.php');
}

function getStatus() {
    return true; //For the sake of this demo
}

如何使用三元运算符重写?

我假设这样的事情:

getStatus() ? require_once('a.php') : require_once('b.php');

但我无法解决语法问题。我见过的所有例子都用它来做某事。例如x = y ? a : b;,但我不想以这种方式使用它。

我想用它做甚么可能吗?

更复杂:

这也可以用三元形式表达吗?

if (websiteIsLive()) {
    setcookie("token", x, 0, '/', $_SERVER['HTTP_HOST'], true);
} else {
    setcookie("token", y, 0, '/');
}

1 个答案:

答案 0 :(得分:5)

三元运算符的参数与任何其他运算符一样,必须是表达式。 require_once是PHP语法,它不是函数,因此无法在表达式中使用。所以你应该在require_once的参数中使用三元运算符,这是一个表达式。

require_once (getStatus() ? 'a.php' : 'b.php');

对于你的额外请求,你可以使用三元运算符,但结果并不漂亮,恕我直言比原来更难理解:

call_user_func_array('setcookie', 
    websiteIsLive() ? 
        array("token", x, 0, '/', $_SERVER['HTTP_HOST'], true) :
        array("token", y, 0, '/'));