UPDATE:2018年11月06日
PHP return 文 関数から値を返して処理終了
1 Minute Note
- return文 は関数から値を返す
//関数 function funcName(){ return 値; }
- return文 は配列やオブジェクトを含むあらゆるデータ型を返すことが可能
- 関数やスクリプト自体(グローバルスコープの場合)の実行を終了させる
//スクリプト終了 return; //関数の実行を終了 function funcName(){ return 値; //以降は実行されない }
- return文 は関数ではなく言語構造なので、引数を括弧で囲う必要がない
return文とは
- return文 は関数から値を返す
//関数 function funcName(){ return 値; }
- return文 は配列やオブジェクトを含むあらゆるデータ型を返すことが可能
- 関数やスクリプト自体(グローバルスコープの場合)の実行を終了させる
//スクリプト終了 return; //関数の実行を終了 function funcName(){ return 値; //以降は実行されない }
- return文 は関数ではなく言語構造なので、引数を括弧で囲う必要がない
関数と return 文
return文は、関数から値を返します。関数内でreturn文が実行されると、関数の実行を停止し、return の引数を関数の値として返します。return文は、配列やオブジェクトを含むあらゆるデータ型を返すことが可能です。
return文は、関数ではなく言語構造であるため、引数を括弧で囲う必要がないことに注意しましょう。括弧で囲わずそのままにしておくのが一般的です。またそのほうがPHPにかかる負荷も低くなります。
パラメータを省略した場合は括弧も省略する必要があります。この場合の返り値はNULLです。return()に括弧をつけてコールしながら何も引数を指定しないと、パースエラーとなります。
変数をリファレンスで返す場合は、決して引数を括弧で囲ってはいけません。そのようにすると正しく動作しません。 return ($a); とすると、変数を返すのではなく ($a) を評価した結果を返すことになります (この場合は、もちろん $a の値です)。
関数から文字列型を返す
1 2 3 4 5 6 7 8 | <!-- サンプルコード --> <?php //文字列を返す function hello(){ return "Hello!<br>\n"; } echo hello(); ?> |
結果は
となります。
関数から整数型を返す
1 2 3 4 5 6 7 8 9 | <!-- サンプルコード --> <?php //整数値を返す function addUp($a, $b){ $c = $a + $b; return "{$c}<br>\n"; } echo addUp(10, 15); ?> |
結果は
となります。
関数から論理型を返す
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- サンプルコード --><?php function valueCheck($a, $b){ if($a === $b) return TRUE; else return FALSE; } if(valueCheck(100, 100)) echo "値は同一です。<br>\n"; else echo "値は同一ではありません。<br>\n"; ?> |
結果は
となります。
関数から配列型を返す
1 2 3 4 5 6 7 8 9 10 | <!-- サンプルコード --> <?php //配列を返す function psNumbers($a){ return array(pow($a, 2), sqrt($a)); } list($powNumber, $sqrtNumber) = psNumbers(16); echo '2乗:'.$powNumber."<br>\n"; echo '平方根:'.$sqrtNumber."<br>\n"; ?> |
結果は
平方根:4
となります。
スクリプトの終了
return文は、スクリプト自体の実行を終了させることが出来ます。これは、グローバルスコープで呼び出される場合です。つまり関数外で実行される場合です。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php //スクリプトの終了 return; echo "スクリプトは終了しているのでechoの内容は出力されません。"; ?> |
結果は
となります。
return;の時点でスクリプトが終了しているので、echoは実行されず、何も表示されません。
return文が実行されたスクリプトが、require、require_once、include、include_once文で外部ファイルから読み込まれたものである場合、外部ファイルのreturn文が実行された時点で、スクリプトの制御が呼び出し元のファイルへ戻ります。
base.php 呼び出し元ファイル
1 2 3 4 5 6 | <!-- サンプルコード --> <?php include 'return.php'; echo "base.phpスクリプトの終了<br>\n"; return; ?> |
include.php インクルードファイル
1 2 3 4 5 | <!-- サンプルコード --> <?php echo "include.phpスクリプトの終了<br>\n"; return; ?> |
base.phpの実行結果は
base.phpスクリプトの終了
となります。
また、return文に引数の値が指定されている場合は、その値は、require、require_once、include、include_onceの戻り値となります。
base.php 呼び出し元ファイル
1 2 3 4 5 6 | <!-- サンプルコード --> <?php echo include 'return.php'; echo "base.phpスクリプトの終了<br>\n"; return; ?> |
include.php インクルードファイル
1 2 3 4 | <!-- サンプルコード --> <?php return "return.phpからの戻り値<br>\n"; ?> |
base.phpの実行結果は
base.phpスクリプトの終了
となります。
サンプルコード
1 2 3 4 5 6 7 | <!-- サンプルコード --> <h3>return文 スクリプトの終了</h3> <?php echo 'return前'; return; echo 'スクリプトは終了しているのでechoの内容は出力されません。'; ?> |
return前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <!-- サンプルコード --> <h3>return文 関数から文字列型を返す</h3> <?php //文字列を返す function hello(){ return "Hello!<br>\n"; } echo hello(); ?> <h3>return文 関数から整数型を返す</h3> <?php //整数値を返す function addUp($a, $b){ $c = $a + $b; return "{$c}<br>\n"; } echo addUp(10, 15); ?> <h3>return文 関数から論理型を返す</h3> <?php function valueCheck($a, $b){ if($a === $b) return TRUE; else return FALSE; } if(valueCheck(100, 100)) echo "値は同一です。<br>\n"; else echo "値は同一ではありません。<br>\n"; ?> <h3>return文 関数から配列型を返す</h3> <?php //配列を返す function psNumbers($a){ return array(pow($a, 2), sqrt($a)); } list($powNumber, $sqrtNumber) = psNumbers(16); echo '2乗:'.$powNumber."<br>\n"; echo '平方根:'.$sqrtNumber."<br>\n"; ?> |
Hello!
return文 関数から整数型を返す
25
return文 関数から論理型を返す
値は同一です。
return文 関数から配列型を返す
2乗:256
平方根:4
タグ(=記事関連ワード)
日付
最終更新日:2018年11月06日