【PHP】関数と戻り値(return) – 関数の処理結果を受け取る

関数の処理結果を呼び出し元に返す戻り値と呼ばれる仕組みがあります。

ここでは関数の戻り値について解説します。

なお、関数や引数については次の記事をご覧ください。

★ 内容

  • 戻り値

戻り値とは

戻り値とは関数の処理結果を値として、呼び出し元に返す仕組みです。

基本構文

戻り値がある場合の関数の基本構文は次のようになります。

function 関数名( 引数変数 ) {
    // 処理1
    // 処理2
    // ・・・・・・
    return 戻り値;
}

return 戻り値;の部分が戻り値の記述になります。
return;のみの記述もできますが、その場合はNULLを戻り値として返します。
また、戻り値(return)は1つの関数に対して複数記述することができます。

関数の呼び出しについては、戻り値がない関数と同じです。

サンプルコード

戻り値がある関数のサンプルコードをご覧ください。

ソースコード

<?php

function addition($x, $y) {
    $result = $x + $y;
    return $result;
}

$total = addition(3, 7);

echo $total."\n";

?>

実行結果

10

5行目のreturn $resultが戻り値の定義です。

addition関数は2つの引数$x, $yを受け取り、それらを加算した値を$resultに記憶し、returnで戻り値として返しています。

戻り値は変数に代入することができ、8行目のように変数 = 関数呼び出しと記述します。
サンプルコードでは$totalに戻り値を代入しており、実行結果から$totalに戻り値が記憶されていることが分かります。

戻り値のイメージ

ソースコードを作る時、読む時は戻り値の動きをイメージすると理解しやすくなります。
戻り値のイメージとしては、関数の呼び出しの記述が戻り値に置き換わるイメージです。

例えば先ほどのサンプルコードでは、実行すると8行目のaddition(3, 7)が10に置き換わるイメージです。

<?php

function addition($x, $y) {
    $result = $x + $y;
    return $result;
}

$total = 10; // ← addition(3, 7)が実行されると10に置き換わる。
echo $total;

?>

あくまでもイメージの話ですが、このイメージを掴むことで、複雑なプログラムも読みやすくなります。
※ 未学習の方が多いかと思いますが、メソッドの連結などはこのイメージを持つと読みやすくなります。

注意点

注意点はreturnは1つの関数に複数作ることができますが、returnが実行されるとそれ以降の関数内の処理は実行されないことです。

次のコードをご覧ください。

ソースコード

<?php

function calc( $num1, $num2 ) {
    
    $sum = $num1 + $num2;
    echo $num1.' + '.$num2.' = '.$sum."\n";
    return $sum;
    
    $sub = $num1 - $num2;
    echo $num1.' - '.$num2.' = '.$sub."\n";
    return $sub;
    
    $mul = $num1 * $num2;
    echo $num1.' * '.$num2.' = '.$mul."\n";
    return $mul;
    
    $div = $num1 / $num2;
    echo $num1.' / '.$num2.' = '.$div."\n";
    return $div;
    
}

calc(8, 5);

?>

実行結果

8 + 5 = 13

calc関数は引数で与えた2つの値の四則演算結果を出力するようなコードに見えますが、関数を呼び出すと7行目のreturnが必ず実行されるため、加算のみの処理で終わってしまいます。

複数returnを作る場合は、returnが実行される条件をif文などで絞りましょう

まとめ

戻り値は関数の処理結果を呼び出し元に返す仕組みです。
呼び出し元では戻り値を変数に代入することができるため、処理の結果に応じてプログラムを組みことができるようになります。