2010-04-01 72 views
0

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

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

很多,但他们不帮你。请提供**代码的一部分** *您正在讨论*,错误被引发的部分*以及错误消息**本身。否则,您必须对此答案感到满意:'42' – 2010-04-01 19:29:43

+0

错误信息是由我生成的。但是k – 2010-04-01 19:32:27

+0

我怎么知道?然后只是代码;) – 2010-04-01 19:33:46

回答

0

这一行:

return $errors; 

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

你可以考虑return作为让函数说:“这里拿这个,我在这里完成!”


因此有可能在函数如多个 return语句:

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

功能是废话,问题是,如果$i更大然后0,语句return 'foo'已到达,功能存在从不执行以下行。

使用此功能,您可以尽早离开某个功能,而无需进行可能不必要的进一步计算。

1

你从你的函数返回代码达到exit之前。这是return所做的。 return语句之后的所有内容都被忽略,并且执行流程返回到您调用该函数的位置。

了解更多关于退货和计划流程here。这是一个基本的概念,如果你希望编写最简单的程序,这一点至关重要。

0

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

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

0

的功能可按被返回变量$errors,然后不执行更多的功能中的代码的。

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

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