嵌套的if语句声明每个语句返回false

时间:2011-11-22 14:46:50

标签: php

说我有以下代码:

function a() {
    if ($a) {
        if ($b) {
            if ($c) {
                // do something
            }
            return FALSE
        }
        return FALSE;
    }
    return FALSE;
}

在这个例子中,我是否需要所有的返回功能,或者如果我删除两个内部的那些,它是否会级联到最后一个?

由于

6 个答案:

答案 0 :(得分:3)

if ($a && $b && $c) {
    //do something
    return TRUE;
} else {
    return FALSE;
}

答案 1 :(得分:0)

它会在列表中向下级联。你不需要每次都返回错误的电话。

答案 2 :(得分:0)

它会下降/级联到最后一个。

但您的return true;部分可能还需要//do something,因为return false;会被调用。

该功能将继续运行,直到发生以下三种情况之一:

  • 执行return语句
  • 已达到该功能的结束}
  • 发生未捕获的异常或(致命)错误

答案 3 :(得分:0)

它会继续,但是,这可能不是你想要的,因为这样的回归将完全结束这个功能,可能会跳过你想做的事情。

答案 4 :(得分:0)

使用类似这样的内容可以直观且易于理解:

function a() {
    if ($a) {
        if ($b) {
            if ($c) {
                // do something
                return TRUE; // or something other than TRUE
            }
        }
    }
    return FALSE;
}

答案 5 :(得分:0)

简短回答;你可以安全地删除所有“return false;”除了最后一个,它仍然会起作用。

一旦它到达if语句的末尾,它将跳出它并继续前一个代码块(一个块由{和}定义)。例如,如果$ a为真,但$ b不为,则它将进入$ a-block,然后跳过$ b-block,继续执行。当$ a-block结束时,它将返回上一个块。请参见下图:

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;