值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。更多信息见 return。
Note:
如果省略了 return,则返回值为
NULL
。
Example #1 return 的使用
<?php
function square($num)
{
return $num * $num;
}
echo square(4); // outputs '16'.
?>
函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。
Example #2 返回一个数组以得到多个返回值
<?php
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?>
从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符 &:
Example #3 从函数返回一个引用
<?php
function &returns_reference()
{
return $someref;
}
$newref =& returns_reference();
?>
有关引用的更多信息, 请查看引用的解释。
PHP 7 增加了对返回值类型声明的支持。 就如 类型声明一样, 返回值类型声明将指定该函数返回值的类型。同样,返回值类型声明也与 有效类型 中可用的参数类型声明一致。
严格类型 也会影响返回值类型声明。在默认的弱模式中,如果返回值与返回值的类型不一致,则会被强制转换为返回值声明的类型。在强模式中,返回值的类型必须正确,否则将会抛出一个TypeError异常.
As of PHP 7.1.0, return values can be marked as nullable by prefixing the
type name with a question mark (?
). This signifies that
the function returns either the specified type or NULL
.
Note:
当覆盖一个父类方法时,子类方法的返回值类型声明必须与父类一致。如果父类方法没有定义返回类型,那么子类方法可以定义任意的返回值类型声明。
Example #4 基础返回值类型声明
<?php
function sum($a, $b): float {
return $a + $b;
}
// Note that a float will be returned.
var_dump(sum(1, 2));
?>
以上例程会输出:
float(3)
Example #5 严格模式下执行
<?php
declare(strict_types=1);
function sum($a, $b): int {
return $a + $b;
}
var_dump(sum(1, 2));
var_dump(sum(1, 2.5));
?>
以上例程会输出:
int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 {main} thrown in - on line 5
Example #6 返回一个对象
<?php
class C {}
function getC(): C {
return new C;
}
var_dump(getC());
?>
以上例程会输出:
object(C)#1 (0) { }
Example #7 Nullable return type declaration (as of PHP 7.1.0)
<?php
function get_item(): ?string {
if (isset($_GET['item'])) {
return $_GET['item'];
} else {
return null;
}
}
?>