オプションの return 文により値を返すことができます。 配列やオブジェクトを含むあらゆる型を返すことができます。 これにより、関数の実行を任意の箇所で終了し、その関数を呼び出した 箇所に制御を戻すことが出来ます。詳細に関しては return を参照してください。
注意:
return を省略した場合は
NULL
を返します。
例1 return の使用法
<?php
function square($num)
{
return $num * $num;
}
echo square(4); // '16'を出力
?>
複数の値を返すことはできませんが、リストを返すことにより 同じ効果を得ることができます。
例2 複数の値を得るために配列を返す
<?php
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?>
関数からリファレンスを返すには、リファレンス演算子 & を関数宣 言部および変数への返り値を代入する際の両方で使用する必要があります。
例3 関数からリファレンスを返す
<?php
function &returns_reference()
{
return $someref;
}
$newref =& returns_reference();
?>
リファレンスに関するさらに詳しい情報がリファレンスの説明にあります。
PHP 7 以降で、戻り値の型宣言が導入されました。 引数の型宣言 と同様に、戻り値の型宣言は、関数から戻される値の型を指定します。 戻り値の型宣言で使える 型 は、引数の型宣言で使えるものと同じです。
厳密な型チェック は、戻り値の型宣言にも影響を及ぼします。デフォルトの弱い型付けでは、 もし戻り値の型が正しいものではなくても、自動的に型変換を行います。 強い型付けの場合は、戻り値の型が正確に一致しなければならず、違っている場合は TypeError が発生します。
注意:
親クラスのメソッドをオーバーライドする場合、子クラスのメソッドの戻り値の型は、 親クラスで宣言されたものと同じでなければいけません。 親クラスのメソッドが戻り値の型を宣言していない場合は、 子クラスのメソッドで型宣言をすることもできます。
例4 戻り値の型宣言の基本例
<?php
function sum($a, $b): float {
return $a + $b;
}
// 戻り値が float となることに注目
var_dump(sum(1, 2));
?>
上の例の出力は以下となります。
float(3)
例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
例6 オブジェクトを返す例
<?php
class C {}
function getC(): C {
return new C;
}
var_dump(getC());
?>
上の例の出力は以下となります。
object(C)#1 (0) { }