测试是否设置了两个变量的最简洁的方法是什么?


What is the most succinct way to test if either of two variables are set?

我正在做的是,如果我在$_POST$_SESSION中没有ID,那么重定向。优先选用$_POST。这里是:

$bool = 0;
if (isset($_POST['id'])) {
    $bool = 1;
} elseif (isset($_SESSION['id'])) {
    $bool = 1;
}
if (!$bool) {
    ...//redirect
}

除了去掉括号之外,有没有更快的方法来写这个?

if(!( isset($_POST['id']) || isset($_SESSION['id']) ))
    redirect();

(不确定我是否理解给予$_POST的是偏好)。

你可以这样做:

$has_id = isset($_POST['id']) || isset($_SESSION['id']);
if (!$has_id) {
    // redirect
}

(我建议你给你的变量更多的描述性名称,而不仅仅是$bool)

如果您不使用该变量做任何其他事情,您可以这样做:

if (!isset($_POST['id']) && !isset($_SESSION['id'])) {
    // redirect
}
if (isset($_POST['id']) || isset($_SESSION['id'])) {
  $bool = 1;
}

可以了,simples

$bool = (isset($_POST['id']) || isset($_SESSION['id'])) ? 1 : 0; // if isset, 1($bool == 1?header(Location: www.whatever.com):null;

使用条件运算符,您可以在一行语句中实现

例子:

c = (a == b) ? d : e;