このページについて
このページではphpで使えるreturnの使い方を解説しています。
return
returnは関数ではなく、if文やbreakなどと同じ制御構造と呼ばれるものになります。これらは引数などを渡すことなく使えます。
関数の外で使った場合
returnをよく使うのは関数内ですが、関数の外で使うこともできます。その際は現在実行中のスクリプトが終了します。
return;
echo 1;
このように書いた場合、returnの時点でスクリプトが終了するのでそれより下にある処理はなかったことになります。なのでechoは無かったことになります。
includeされた物にreturnが入っていた場合、スクリプトの制御が呼び出し元に移行します。どういうことかというと、AとBの2つのphpファイルがあったとします。Aの中身は以下の通り。
echo 1;
return;
そしてBの中身が以下の通り。
include ('A.php');
echo 2;
Bがメインスクリプトだとします。そしてBを実行するとA.phpを読み込んで処理を実行します。Aの中身は1を出力・returnの2つだけなので、Aのreturnまでくると制御がB.phpに戻ってきます。そしてその次にあるのがecho 2なので、それを実行します。結果は12と表示されています。
ちなみにですが、A.phpのreturnの中にはA.phpの処理で出来上がった物が戻り値として含まれています。なのでecho 1が実行されているというわけです。
仮にreturnではなくスクリプト自体を終了させるexitだった場合、処理はexitを行なった時点で終了するので2は出力されず、1のみが出力されることになります。
関数の中で使った場合
returnを最も多く見る場面はこっちかな?って思います。関数の中でreturnを実行した場合、その関数の処理を中断して呼び出し元に結果を返します。まずは例
function test($a) {
return $a * 20;
echo 1;
}
test(10); //10*20の結果に置き換わる
echo test(10); //200が出力
このように関数を作ったとします。この場合は
- 引数($a)に20を掛けた数値をreturnで呼び出し元に返す
- returnが実行されたので、それ以降の処理はスキップされる
という2つの処理が順番に行われます。つまりecho 1は無視されます。関数を呼び出して、引数を指定したら既に値が返ってくるのでechoやprintなどで出力して答え合わせしてみましょう。200のみが出力され、echo 1は無視されていることがわかります。
この他の使い方はというと
function test($a) {
$b = [1,2,3,4];
array_push($b,$a);
return $b;
}
var_dump(test(10));
このように使うと引数として渡した10が関数内の$b配列に加わります。そして加わった後の$bがreturnで返ってきます。このように配列に対しても使うことができます。
関数内で使うechoとreturnの使い分け
ここまで読むと関数内ではどっちを使うのがいいのか、正直困ると思います。どちらも使えるためそれぞれの特徴などをしっかりと把握しておきましょう。
- echo
- 関数内で使うと、その時点で画面に出力する。その後の関数内の処理は続行される。
関数呼び出し元には値が返ってこない。 - return
- 関数内で使うと、その時点で関数の残りの処理がスキップされて呼び出し元に値が返される。
関数を呼び出しただけでは画面に出力はしないので、関数を呼び出した後で出力する必要がある。
2つはこのような違いがあります。関数の内容にもよりますが、その場で出力したい場合(途中経過や、複数のパターンなど)がある場合はechoを、結果が常に1つでその後の計算処理にも使うのであればreturnで値を受け取り、他の処理へと渡すのが良いかなと思います。
まとめ
returnは関数の中と外のどちらでも使えます。外で使った場合はその時点での処理を中断して制御を呼び出し元へと返す機能になります。関数内で呼び出すと残りの関数の処理をスキップして呼び出し元に指定した値を渡します。それぞれ用途が大きく異なるのでしっかり把握しておきましょう。
- phpの基礎
- phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
- echoとprint
- 画面に文字を出力する2種類の言語構造の使い方
- 変数
- phpで使える変数の扱い方などを解説しています。
- 変数のスコープ(有効範囲)
- 変数のスコープについての解説です。
- var_dump
- 変数の情報を見ることができる関数
- print_r
- 変数の情報をわかりやすい形式で表示する関数
- 配列と連想配列
- 配列と連想配列の書き方と、便利な関数の解説など。
- key
- 連想配列のキーを返してくれます。内部ポインタ関係あり。
- count
- 配列や連想配列の要素数を数えてくれる関数の使い方解説。
- ソート関数
- 配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
- array_reverse
- 配列の中身の順番を反転させる関数です。
- array_chunk
- 配列を指定した数で分割させるarray_chunk関数の使い方解説です。
- array_combine
- 2つの配列を足して1つの連想配列にする関数です。
- array_diff
- 2つの配列を比較して、存在しない値を出力する関数
- array_push
- 配列に対して後方に要素を追加する関数
- array_unshift
- 配列に対して先頭に要素を追加する関数。
- array_shift
- 配列の先頭の要素を取り出す関数。
- array_merge
- 複数の配列を統合して1次元の配列にする関数
- array_intersect
- 2つの配列を比較して、両方に共通するものを出力する関数
- include
- includeを使って別のphpファイルを読み込む方法の解説。
- if文
- if文を使って処理を変更させる方法の解説。
- switch文
- switch文を使って複数の処理分岐を行わせたい時に使います。
- forループ
- forループを使って同じ処理を行わせる方法の解説です。
- whileループ
- whileループを使って同じ処理を行わせる方法の解説と注意点。
- do-whileループ
- do-whileループを使って同じ処理を行わせる方法の解説です。
- foreachループ
- foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
- continue
- ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
- ループのネスト構造(入れ子)
- ループの中にループを入れる書き方や考え方の解説。
- function
- functionを使って自作の関数を作成・使用する方法の解説。
- 引数の種類と書き方解説
- functionで扱う引数の種類と書き方を解説
- return
- returnの使い方と関数での使い方解説。
- class
- classを作成して変数と関数を1つにまとめる方法と使い方の解説。
- constructとdestruct
- classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
- インターフェイス
- インターフェイスという用語の解説と、実際の使い方解説
- トレイト
- コードを再利用するのに便利なトレイトの解説です。
- 列挙型
- プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
- PDOを使ってMySQLへ接続
- PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
- データの加工と表示
- PDOでデータベースから取得したデータを加工して表示する方法の解説です。
- HTMLフォームのデータ受け取りと表示
- HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。