我不太确定该如何命名这个问题-以下是我正在做的一小段:
<?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:
}