PHPでユーザー定義関数からの戻り値

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」という名前で保存し、実行させてみます。

実行してみると、通常、関数は複数の値を返すことはできませんが、複数の変数に入れられている値が返され出力できました。

コメント

タイトルとURLをコピーしました