PHP - 返回值



PHP 函式可以在其函式體中的最後一個語句中有一個可選的 return 語句。PHP 中的大多數內建函式都會返回某個值。例如,strlen() 函式返回字串的長度。類似地,使用者定義的函式也可以返回某個值。

函式是一個獨立的、完整的、可重用的語句塊。當被呼叫時,它執行某個任務並將程式控制權返回到呼叫它的位置,即使沒有使用 return 語句也是如此。return 語句允許它將一個值以及控制權一起帶回呼叫環境。

function foo($arg_1, $arg_2) {
   statements;
   return $retval;
}

函式可以返回任何型別的資料,包括標量變數、陣列和物件。沒有表示式在前的 return 關鍵字返回 null,等同於函式根本沒有返回值。

函式返回的值可以儲存在變數中,可以放在表示式中,或者如果出現在 print 或 echo 內部,則顯示在輸出中。

$res = foo($x, $y);

它允許函式的返回值在程式中進一步使用。

示例

讓我們修改上一章中的 addition() 函式,包括一個 return 語句以返回加法的結果。

<?php
   function addition($first, $second) {
      $result = $first+$second;
      return $result;
   }

   $x=10;
   $y=20;
   $z = addition($x, $y);
   echo "First number: $x Second number: $y Addition: $z". PHP_EOL;
?>

它將產生以下 輸出 -

First number: 10 Second number: 20 Addition: 30

PHP 中的函式可以有任意數量的引數,但只能返回一個值。一旦函式第一次遇到 return 語句,它就會返回到呼叫環境,放棄函式體中其餘的語句。

示例

如果嘗試在 return 語句中包含多個值,則會遇到如下所示的 PHP 解析錯誤 -

<?php
   function raiseto($x) {
      $sqr =  $x**2;
      $cub =  $x**3;
      return $sqr, $cub;
   }
   $a = 5;
   $val = raiseto($a);
?>

它將產生以下 輸出 -

PHP Parse error: syntax error, unexpected token ",", expecting ";" 

條件返回值

可以在不同的條件語句下執行多個 return 語句。

示例

在下面的程式中,raiseto() 函式返回數字的平方或立方,具體取決於索引引數是 2 還是 3。

<?php
   function raiseto($x, $i) {
      if ($i == 2) {
         return $x**2;
      } elseif ($i==3) {
         return $x**3;
      }
   }
   $a = 5;
   $b = 2;
   $val = raiseto($a, $b);
   echo "$a raised to $b = $val" . PHP_EOL;

   $x = 7;
   $y = 3;
   echo "$x raised to $y = " . raiseto($x, $y) . PHP_EOL;
?>

它將產生以下 輸出 -

5 raised to 2 = 25
7 raised to 3 = 343

將多個值作為陣列返回

PHP 中的函式只能返回單個值。但是,該單個值可以是包含多個值的陣列。我們可以利用此特性一次返回數字的平方和立方。

示例

請看下面的例子 -

<?php
   function raiseto($x){
      $sqr =  $x**2;
      $cub =  $x**3;
      $ret = ["sqr" => $sqr, "cub" => $cub];
      return $ret;
   }
   $a = 5;
   $val = raiseto($a);
   echo "Square of $a: " . $val["sqr"] . PHP_EOL;
   echo "Cube of $a: " . $val["cub"] . PHP_EOL;
?>

它將產生以下 輸出 -

Square of 5: 25
Cube of 5: 125
廣告