Php 声明每个语句返回false的嵌套if语句
假设我有以下代码:Php 声明每个语句返回false的嵌套if语句,php,Php,假设我有以下代码: function a() { if ($a) { if ($b) { if ($c) { // do something } return FALSE } return FALSE; } return FALSE; } 在这个例子中,我需要所有的返回错误吗?或者如果我删除了两个内部错误,它会级联到最后
function a() {
if ($a) {
if ($b) {
if ($c) {
// do something
}
return FALSE
}
return FALSE;
}
return FALSE;
}
在这个例子中,我需要所有的返回错误吗?或者如果我删除了两个内部错误,它会级联到最后一个吗
谢谢它将从列表中层叠而下。您不需要每次返回错误呼叫。它将下降/级联到最后一个 但是您可能还需要
返回true代码>在你的//做某事部分,因为返回false代码>将以其他方式调用
该函数将继续运行,直到发生以下三种情况之一:
- 执行
return
语句
- 达到函数的关闭
}
- 发生未修补的异常或(致命)错误
它将一直持续到,但是,这可能不是您想要的,因为这样的返回将完全结束函数,并且可能会跳过您想要完成的操作。使用类似于以下内容的简单易懂的表示:
function a() {
if ($a) {
if ($b) {
if ($c) {
// do something
return TRUE; // or something other than TRUE
}
}
}
return FALSE;
}
简短的回答;您可以安全地删除除最后一个之外的所有“return false;”,它仍然可以正常工作
一旦到达if语句的末尾,它将跳出if语句并继续执行前一个代码块(一个代码块由{和}定义)。例如,如果$a为真,但$b为非真,则它将输入$a块,然后跳过$b块,并在其后继续。当$a块结束时,它将返回到上一块。请参见下图:
function a() {
if ($a) { // $a is true, enters block
if($b) { // $b is false, skip block
return true;
}
// end of $a-block reached, leave $a-block
}
return false; // return false and stop further execution
}
编写上述if语句的更简洁方法可以是:
If ($a && $b)
return true;
return false;
我希望这不是生产代码。您的最后一个返回语句已超出所有if块。因此,如果您没有在这些块中使用任何返回,那么最后一个肯定会被执行,并且足以使用。但是,您的函数将始终返回false(我想这可能不是我们想要的)。
If ($a && $b)
return true;
return false;