【PHP初心者】関数における引数と返り値(戻り値)を解説

WEBエンジニアのけちーんです。

関数(function(引数))の引数とか返り値(return)とか難しくないですか?

私は理解するのに結構時間がかかりました。

それだけ初心者がつまづきやすい部分だと思います。

 

引数の中身があったり空だったり、returnをしたりしなかったり・・・。

この辺りが、わけがわからなくなる要因だと思います。

 

今回の記事では、中々理解しづらい「引数(ひきすう)」と「返り値」について、わかりやすく解説していきます。

 

引数と返り値について解説

 

 

上のコードを使って解説します。

詳しい解説はあとでしますので、どういった動きが行われているのかを先に解説します。

 

・変数$abcを宣言

・変数$abcに数値の1を代入

・関数testを宣言

(関数testは引数として受け取った数値に++(+1)して返り値として返す)

・関数testに引数として、変数$abcを渡す

・変数$abc++されて出てくる

 

ざっとですが、こんな動きをしています。

 

ここから詳しく説明していきます。

 

関数について詳しく解説

 

 

まず基礎的な部分ですが、function 〇〇(  ) とすることで、関数宣言を行います。

最初だけfunctionで宣言したあとは、〇〇の部分のみの記載でOKです。

 

今回testという関数名で関数宣言しましたので、中身を確認していきます。

function test($num)として、引数に$numをいれております。

ということで、まずは引数について解説していきます。

 

引数について解説

 

よくある例えとして、ミキサーで例えられることが多いので、ここでもミキサーを使って解説していきます。

もちろん他でしている解説より、深く解説していきますので、安心してください!

 

まずミキサー(関数)を用意します。

今回のミキサーは「牛乳」と「果物」を「混ぜる」ミキサーです。

牛乳」と「混ぜる」、この2つは必ず必要ですので、関数の中にそのまま入れます。

果物」はバナナだったり、イチゴだったりする不確定要素です。

とはいえ、「果物」が入るのは確定しています。

ここで登場するのが、引数です。

コード風に書くと、

 

 

セミコロンないとか、細かいことは置いておくとして、こんな感じです。

 

ミキサー(果物)」として、引数に果物を入れています。

関数を宣言した時点では、果物を入れる箱があるだけで、中身は空っぽです。

関数を呼び出す際に、引数の箱に果物を入れることで、その関数が引数を使ってうまく動きます

ではその箱の中に果物を入れたい場合どうするのか説明していきます。

 

 

 

まず関数を使うには、関数を呼び出す必要があります。

とはいっても、関数名を書くだけですね。

 

ミキサー(バナナ);

 

これだけです。

このように、関数を呼び出す際に関数名の後ろの(  )に引数の箱に入れたいものを書きます

今回は引数としてバナナを入れました。

すると先ほどの関数がこうなります。

 

 

 

はい、バナナオレみたいな飲み物が完成します。

果物という引数の箱の中に、バナナを入れました。

そうすることで関数の中身が、

「牛乳」 +「 混ぜる」 + 「果物(という箱)」

から

「牛乳」 +「 混ぜる」 + 「バナナ」

になります。

 

 

ミキサー(イチゴ);

 

こうすると、イチゴオレが完成します。

なぜなら、果物という引数の箱に「イチゴ」が入るからですね。

「牛乳」 +「 混ぜる」 + 「イチゴ」

こんな感じ。

 

 

 

こんな便利屋さんの引数ですが、引数が空の関数も見かけますよね?

それについて、お伝えしていきます。

 

関数の中ですべて完結している場合は、引数で空の箱を用意する必要はありません

あくまで一例ですが今回のミキサーの例でいうと、「バナナオレを作るミキサー」、「イチゴオレを作るミキサー」というようにあらかじめ専用のミキサーがあれば、わざわざ引数を使う必要はありません。

最初からミキサーの中身に「バナナ」や「イチゴ」が入っているからですね。

 

他の例でいくと、PHPではデータベースへ接続することがあります。

データベースへの接続は、決まったデータベースに接続します。

ですので、引数として空の箱を用意せず、常に同じ動き(同じデータベースに接続)をします。

そういった場合には引数が必要ありません。

 

 

 

引数というのは、便利な関数を更に便利にするものです。

最初のうちは、「バナナオレを作るミキサー」「イチゴオレを作るミキサー」の両方を作ってもいいと思います。

他にもブドウやオレンジ、メロンなど増えてくると

 

あれ?これ果物以外全部おんなじこと書いてるから、果物の部分引数にして関数呼び出す時に持ってきた方が楽やん!

 

という感覚が出てくると思います。

こうなれば引数はマスターです。

 

返り値について解説

 

次に返り値を説明します。

とりあえず例をご覧ください。

まずは返り値(return)設定した場合です。

echo$resultを書き出したところ、3とでました。

 

 

続いて返り値(retrurn)を設定しなかった場合です。

 

こちらは2とでましたね。

 

解説していきます。

 

返り値を設定した場合

 

 

まず返り値を設定した場合です。

まずは関数が実行されるタイミングを見ていきます。

 

 

ここで関数が呼び出されています。

ですので、この段階で関数sumが実行されます。

関数sumの中身は、変数num1を代入しているだけの単純なものです。

その$numreturnしています。

returnすることでこう変わります。

 

 

sum()の場所が1に変わってますね。

これがreturnの結果です。

流れの確認です。

 

  • 関数実行
  • $numに数値の1を代入
  • $numをreturn
  • sum()が$numに変わる
  • ($numは数値の1)
  • 1に変わる

 

返り値を設定しなかった場合

 

 

今回はreturnを設定しなかった場合ですね。

関数sumで返り値を設定していないので、関数sumを呼び出したところで何も起きません。

なぜなら、returnがあってはじめて関数を呼び出した場所に変化があるからです。

 

まだ頭の中が「???」という方も多いと思いますので、会社の上司部下を例に説明します。

 

まず前提イメージとして

部下 = 関数

だと思ってください(部下すまん)。

 

返り値未設定バージョン

 

上司「おーい、部下!」 ←部下を呼び出し、関数実行です。

部下「はい、なんでしょう?」

上司「この書類記入しといて、提出はしなくていいから!」

↑部下という関数の中身は書類記入

部下「かしこまりました。」

 

これが返り値未設定バージョンです。

返り値を設定していませんで、関数である部下は関数を呼び出した上司に、書類を提出する必要がありません

 

返り値設定バージョン

 

上司「おーい、部下!」 ←またここで関数呼び出し

部下「はい、なんでしょう?」

上司「この書類記入して、終わったら俺に提出して!」

↑関数の処理(書類記入)が終わったら上司に提出

部下「かしこまりました。」

 

返り値を設定している場合は、呼び出された場所に関数の結果を返します

 


 

このように、返り値を設定するのは、実行した場所で関数の結果(今回の例でいくと部下が記入した書類)が必要な場合です。

関数の中身さえ実行すればそれでOKな場合は、返り値を設定する必要はありません。

 

以上を踏まえてはじめのコードの引数と返り値を解説

 

 

一番始めに記載していたこのコードを見ていきます。

ここまで読んだあなたならこのコードが理解できると思います。

流れの確認をしていきましょう。

 

まずは変数$abcに数値の1を代入しています。

 

次に、関数testを宣言しています。

testの中身は、引数として持ってきた数値に++(+1)しています。

そして++した結果をreturnしています。

 

最後に、関数testに引数として変数$abcを渡して呼び出しています。

そして関数を実行した結果をechoで出力しています。

 

その結果

2と出ました。

 

 

わかってしまえば簡単ですね。

 

関数(引数、返り値)まとめ

 

関数は中身が複雑になっても、基本は引数で値を持ってきて返り値で値を返す、というものです。

ものによっては引数がなかったり、返り値がなかったりしますが、基本を理解していれば大丈夫です。

うまく使えると非常に便利なのもですのでマスターしていきましょう!

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です