PHP – 否则,’escape’嵌套并跳转到elseif

我不太确定如何标题这个问题 – 这是我正在做的事情的片段:

<?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,它应该从那里继续并“转义”’parent’,如果移动到elseif.另外,如果第一个嵌套参数为true,那么它应该保持不变.

这甚至可能发生吗?我唯一能想到的就是添加多个继续;命令.那当然是犯了一个错误.

我的另一个想法是将变量设置为等于继续;在else中,然后在父节点结束之前设置它,如果:

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) {

}

或者,您可以在[Do something else]和第二个if块之间使用goto,但无论如何它都会变得混乱.

if (1 == 1) {
    if (1 == 2) {
        /* Do something */
    } else {
        /* Do something else */
        goto 1
    }
} else if (!$run && 2 == 2) {
    1:
}
上一篇:Kubernetes(K8s)2020版 高可用master部署(9)


下一篇:Python中的递归函数:获取特定嵌套项列表的最佳方法