我想做一些非常简单的事情:
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, '/');
}
答案 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, '/'));