php 双 if 语句

php double if statement

我刚开始学习如何编程。我想知道最好的方法是什么来处理你有一个双 if 语句的问题,两者都有相同的 Else 结果。

以下面的双if语句为例。

if (isset($x)) {
    $y = doSomething($x);
    if ($y == "something") {
        do result A;
    }
    else {
        do result B;
    }
}
else {
    do result B;
}

多次写入结果B似乎不是一个聪明的主意。 现在有哪些不同的方法可以防止多次写入结果 B?

可以尝试组合 1 个 if 语句,但这似乎并不总是可行的(例如,在使用 isset() 检查变量是否存在时)。

if (isset($x) && $y) { etc. }

还有哪些其他选择?

PS。我也愿意接受其他建议来帮助改进我的代码,比如如何以更好的方式编写 if(isset($x))。

if (isset($x) && doSomething($x) == 'something') {
    // do result A;
}
else {
    // do result B;
}

重要提示:只有当 isset($x) 的计算结果为真时,才会计算 doSomething($x)。否则直接中止条件检查,执行else分支。因此,如果未设置 $x,您不必担心 doSomething($x) 会产生任何副作用。

我不确定这是否是记录在案的行为,但可以通过以下方式检查:

<?php
function checkSomething() {
    echo "Look, I'm checking something!\n";
    return true;
}

if (1 == 0 && checkSomething()) {
    echo "if\n";
} else {
    echo "else\n";
}

输出:

else

如果检查 checkSomething(),它会输出 if 以及 checkSomething() 中的 echo

if (isset($x) && doSomething($x) == "something") {
    do result A;
}
else {
    do result B;
}

$successful = false;
if (isset($x)) {
    $y = doSomething($x);
    if ($y == "something") {
        $successful = true;
    }
}

if ($successful) {
    do result A;
} else {
    do result B;
}

您可能想使用三元运算符来设置 $y

$y = (isset($x)) ? doSomething($x) : "some_other_value";
if ($y == "something") 
{
  do result A;
}
else 
{
   do result B;
}

如果设置了 $x,则它将 doSomething($x) 返回的值放入 $y,否则您指定的其他值。然后,您对 $y.

的值执行一次 if 语句

谢谢大家的帮助。

我发现以下是解决此问题的最简单、最清晰的方法。现在结果 B 只写了一次而不是多次。尤其是当结果 B 变长时,这会使其易于阅读。

$failure = false;

if (isset($x)) {
    $y = doSomething($x);
    if ($y == "something") {
        do result A;
    } else {
        $failure = true;
    }
} else {
   $failure = true;
}

if ($failure == true) {
    do result B;
}