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
广告