PHP Conference Japan 2024

return

(PHP 4, PHP 5, PHP 7, PHP 8)

return 將程式控制權返回呼叫模組。執行會從被呼叫模組呼叫之後的運算式繼續。

如果從函式內部呼叫,return 陳述式會立即結束目前函式的執行,並將其引數作為函式呼叫的值返回。return 也會結束 eval() 陳述式或程式碼檔案的執行。

如果從全域範圍呼叫,則會結束目前指令碼檔案的執行。如果目前的指令碼檔案是被 includerequire 的,則控制權會交回呼叫的檔案。此外,如果目前的指令碼檔案是被 include 的,則 return 所給的值將會作為 include 呼叫的返回值。如果從主指令碼檔案內呼叫 return,則指令碼執行結束。如果目前的指令碼檔案是由 php.ini 中的 auto_prepend_fileauto_append_file 設定選項指定的,則該指令碼檔案的執行會結束。

更多資訊,請參閱 返回值

注意請注意,由於 return 是一個語言建構式而不是函式,因此不需要在其參數周圍加上括號,並不建議使用括號。

注意如果沒有提供參數,則必須省略括號,並且會返回 null。使用括號但沒有參數呼叫 return 將會導致剖析錯誤。

從 PHP 7.1.0 開始,在宣告返回類型但不帶參數的函式中使用 return 陳述式會觸發 E_COMPILE_ERROR,除非返回類型是 void,在這種情況下,帶有參數的 return 陳述式會觸發該錯誤。

新增註釋

使用者貢獻的註釋 2 則註釋

warhog at warhog dot net
18 年前
對於那些認為在指令碼中使用 return 與使用 exit 相同的人,請注意:使用 return 只會退出目前指令碼的執行,而 exit 則會退出整個執行。

看看這個例子

a.php
<?php
include("b.php");
echo
"a";
?>

b.php
<?php
echo "b";
return;
?>

(執行 a.php:)將會輸出 "ba"。

而(修改後的 b.php)

a.php
<?php
include("b.php");
echo
"a";
?>

b.php
<?php
echo "b";
exit;
?>

(執行 a.php:)將會輸出 "b"。
J.D. Grimes
11 年前
請注意,由於 PHP 在執行檔案之前會先處理檔案,因此即使未執行檔案,在包含的檔案中定義的任何函式仍然可用。

範例

a.php
<?php
include 'b.php';

foo();
?>

b.php
<?php
return;

function
foo() {
echo
'foo';
}
?>

執行 a.php 會輸出 "foo"。
To Top