PHP return關鍵字(函數返回值)

2020-07-16 10:05:11
在 PHP 中,函數的返回值可以是任意型別的資料;當然,函數也可以不返回值。函數使用 return 關鍵字返回資料,函數遇到 return 關鍵字會立即終止執行。

範例程式碼如下:
<?php
function square($num){
    return $num * $num;
}
echo square(4);  //outputs'16'.
?>
以上程式碼的執行結果為:

16

函數只能有一個返回值

函數不能返回多個值,但可以通過返回一個陣列來得到類似的效果。程式碼如下:
<?php
function small_numbers(){
    return array(0, 1, 2);
}
list($zero, $one, $two) = small_numbers();
echo $zero . $one . $two;
?>
程式碼執行結果為:

012

$zero $one $two 的值分別是0、1、2。

返回值型別宣告

在 PHP 7 中函數增加了返回值的型別宣告。和引數型別宣告類似,在非嚴格模式下,PHP 將會嘗試將返回值型別轉換成期望得到的值型別,但在嚴格模式下,函數的返回值必須與宣告的返回型別一致。

範例如下:
<?php
function sum($a, $b):float{
    return $a + $b;
}
var_dump( sum(1,2) );
?>
以上程式會輸出:

float(3)


在嚴格模式下的程式碼如下:
<?php
declare(strict_types=1);
function sum($a, $b):int{
    return $a + $b;
}
var_dump( sum(1,2) );
var_dump( sum(1,2.1) );
?>
以上程式的執行結果為:

int(3)
Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in /Library/WebServer/Documents/book/str.php:281 Stack trace: #0 /Library/WebServer/Documents/book/str.php(284): sum(1, 2.1) #1 {main} thrown in /Library/WebServer/Documents/book/str.php on line 281