我不太确定如何标题这个问题 – 这是我正在做的事情的片段:
<?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:
}