我不太确定该如何命名这个问题-以下是我正在做的一小段:

<?php
  if ($result_rows >= 1 && $membership = 'active') {
     if ($when_next_allowed > $today_date) {
         $output = 'You cannot renew your membership for another <b>' . $days_left . 'days</b>.';
     }
     /*
     What if the membership is set to active, but it's been over a year since they
     activated it? We don't have any server-side functions for determining such
     at the time.
     */
     else {
         /* do database stuff to change the database entry to inactive */
         /* skip to elseif below */
     }
  }
  elseif (2 == 2) {
     /* create new database entry for user's membership */
  }
?>

如果第一个嵌套参数为false,则它应移到else上,else应从此处继续,并“转义”父if并移到elseif。另一方面,如果第一个嵌套参数是真的,那么它应该保持不变。
那是可能发生的事吗?我唯一能想到的就是添加多个continue;命令。当然,这是个错误。
我的另一个想法是将变量设置为在其他范围内等于continue;,然后在父的结束之前将其设置为:
if (1 == 1) {
...
  else {
       $escape = 'continue;';
  }
/* $escape here */
}

但我从来没有听说过,也不知道有什么方法可以用这样的“原始”形式使用变量。当然我已经做过研究了,不过我还没有弄清楚怎么做。我不确定这是否是常识或其他什么,但我从来没有听说过,或考虑过这样的事情,直到现在。
解决方案?这是我一直在想的,虽然我不知道我会用它。

最佳答案

我能想到的最干净的:

$run = false;
if (1 == 1) {
    $run = true;
    if (1 == 2) {
        /* Do something */
    } else {
        $run = false;
        /* Do something else */
    }
}

if (!$run && 2 == 2) {

}

或者,您可以在[执行其他操作]和第二个if块之间使用goto,但无论哪种方式都会很混乱。
if (1 == 1) {
    if (1 == 2) {
        /* Do something */
    } else {
        /* Do something else */
        goto 1
    }
} else if (!$run && 2 == 2) {
    1:
}

10-05 20:08