0

我有一个函数,如果未定义变量,exit;则调用该函数,因此它不应在页面上产生任何内容,而是在空白页面上产生。它在实际退出之前会产生一条错误消息。所以当它应该执行时,因为没有定义变量,它应该死掉,但是发生的是错误消息被执行,然后页面的其余部分在错误消息下加载,并且不退出。有任何想法吗?

public function exit_error() {
    parent::error_array();
    $errors = $this->msg_array;
    return $errors;
    die(); // error should produce, then die here.
}
4

4 回答 4

1

在代码到达exit. 这就是这样return做的。return 语句之后的所有内容都被忽略,执行流程返回到您调用函数的点。

在此处阅读有关退货和计划流程的更多信息。这是一个基本概念,如果您希望编写最简单的程序,理解它是至关重要的。

于 2010-04-01T19:34:19.160 回答
0

有了这条线:

return $errors;

函数退出并将结果返回给调用者。语句
之后的任何内容都不会执行!return

你可以想象return让函数说:“拿这个,我已经完成了!” .


因此,一个函数中可能有多个返回语句,例如:

function($i) {
   if($i > 0) {
       return 'foo';
   }
   $i = -$i;
   return 'bar';
}

该函数是胡说八道,关键是 if$i大于 then 0,到达语句return 'foo',该函数存在并且从不执​​行以下行。

有了这个,您可以提前离开函数,而无需进行可能不必要的进一步计算。

于 2010-04-01T19:35:43.427 回答
0

通过使用return,您基本上退出了您的功能。任何后续语句都将被忽略,包括die().

哦,保存独角兽并exit()改用;)。(这是个玩笑,die()相当于exit()在PHP中)

于 2010-04-01T19:36:02.083 回答
0

该函数正在返回变量$errors,然后不再执行函数中的代码。

    public function exit_error() {
        parent::error_array();
        $errors = $this->msg_array;
        return $errors;
        echo "hello";
        die();
    }

Hello 永远不会被打印,因为函数已停止执行。

于 2010-04-01T19:36:17.527 回答