PHPでユーザー定義関数からの戻り値について解説しています。
関数は、return文(ステートメント)を使用し、関数を呼び出したスクリプトに値を返すことができます(戻り値)。戻り値には、配列やオブジェクトなど、どのような型でも使用することが可能です。なお、関数は複数の値を返すことはできません。
■環境
・Windows10
・WampServer Version 3.2.3 64bit
・PHP Version 7.3.21
■関数を定義し、return文を使用し、値を返す
では、早速関数を定義し、return文を使用し、値を返してみます。
■コード
<?php
function add_sum($num1,$num2){
$sum_total = $num1 + $num2;
return $sum_total;
}
echo add_sum(8,12);
?>
今回はadd_sumというユーザー定義関数を作成します。括弧”()”内には、$num1と$num2という2つの引数を指定します。指定後、中括弧”{}”を記述し、その中に実行する処理を記述します。
記述するのは、今回はsum_totalという変数を定義し、その中にnum1変数とnum2変数を四則演算を使用し、加法(足し算)したものを格納します。
格納後、return文を使用し、sum_totalという変数の値を返します。
add_sumというユーザー定義関数を作成後、echo文を使用し、関数の名前を記述し、その後に括弧”()”内に、関数へ渡す値を入力します。入力後、関数を呼び出してみます。
■実行
では、このスクリプトを「hello.php」という名前で保存し、実行させてみます。
実行してみると、今回作成したユーザー定義関数の括弧”()”内に入れた値が、関数内の変数に入れられて処理が実行し、値が返されて出力されました。
■return文を使用せずに、スクリプトを実行する
■コード
<?php
function add_sum($num1,$num2){
$sum_total = $num1 + $num2;
}
echo add_sum(8,12);
?>
ここで実験です。return文を使用せずに、スクリプトを実行するとどうなるのでしょうか。
■実行
実行してみると、return文がありませんので、値を返すことができず、何も表示されません。
■配列を返し、複数の値を返すと同様の結果を得る
通常、関数は複数の値を返すことはできませんが、 複数の値を返すと同様の結果を得ることは可能ですので、やってみます。
■コード
<?php
function add_sum($num1,$num2){
$sum_total = $num1 + $num2;
$array = array($num1, $num2, $sum_total);
return $array;
}
list($num1, $num2, $sum_total) = add_sum(8,12);
echo $num1."<br>";
echo $num2."<br>";
echo $sum_total."<br>";
?>
複数の値を返すと同様の結果を得る場合は、add_sumというユーザー定義関数を作成し、その中に実行する処理を記述するときに、arrayという変数を作成し、その中にarray()を使用し、配列を作成し、配列の値に、$num1変数,$num2変数,$sum_total変数を格納します。
格納後、return文を使用し、arrayという変数を返します。
add_sumというユーザー定義関数を呼び出す際は、list()を使用し、配列の値に返り値を変数として、格納します。この時、add_sum関数を呼び出し配列に格納しますので、「=(イコール)」を記述します。このようにしないと、「Undefined variable」は変数に値がないというエラーが発生します。
その後、echo文を使用し、それぞれの変数を出力します。
■実行
では、このスクリプトを「hello.php」という名前で保存し、実行させてみます。
実行してみると、通常、関数は複数の値を返すことはできませんが、複数の変数に入れられている値が返され出力できました。
コメント