2010-04-01 21 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(); 
    } 

你永遠不會打印,因爲函數已經停止執行。