カテゴリー
PHP

ユーザー定義関数について知ろう

この章ではユーザー定義関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値を返す機能を持っていますと説明しました。
これまで説明した関数はPHPによって始めから用意されている関数です。
例えば1は配列の1番上に要素を追加する関数ですが、初めからPHPの内部機構でそのような働きを作ってくれています。
ユーザー定義関数では自身で好きなように、ある働きを持った関数を作ることができます。例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品の代金を関数に渡すと関数は商品金額に消費税額を掛けた処理をして、その結果を返すという機能を持った関数を作ります。
商品金額に消費税額を掛けた処理を関数として自身で作成するということです。関数の基本構文は以下の通りです。
この構文の中の引数とは関数内で使われるデータの事です。
この引数の箇所にデータを入れて関数を処理していきます。1 関数名の付け方は変数名の付け方と基本的には同じですが、変数と違って関数は大文字と小文字は区別しません。
例えばdepositと言う関数とDepositと言う関数は同じ関数を意味します。
関数の中の引数は左端から第1引数、第2引数と、使う分だけ設定します。
では関数の説明をしていきます。
関数を使わないで国語、算数、英語の平均を求めるプログラムを書きますと、以下のように書くことが出来ます。1 これを関数で書き換えますと以下のようになります。1 実はAverage関数はこのままでは何も動きません。
この関数を使用するためには関数を呼び出す必要があります。
呼び出すことによって初めて関数が実行されます。
関数の呼び出しの基本構文は以下の通りです。
この関数の呼び出しで引数のデータを関数に渡します。1
関数の呼び出し場所は以下のように関数の前でも後でも問題ありません。1 もしくは1
ではこのプログラムを順を追って詳しく見てみましょう。
1で関数を呼び出します。
引数である変数にはそれぞれ56、45、99が代入されています。

〇関数を呼び出した後は$kokugonの値が$eに、$sansuuの値が$fに、$eigoの値が$gに代入されます。
実引数と仮引数の変数名が同じでなくても問題ありません。
つまり$kokugoと$e, $sansuuと$f, $eigoと$gが同じ変数名である必要はありません。

〇仮引数$e,$f,$gの部分にそれぞれ値が代入されましたが、仮引数$eはfunction内部の$eの部分に、仮引数$fはfunction内部の$fの部分に、仮引数$gはfunction内部の$gの部分に代入され計算が実行されます。

〇 function内部の処理が終わったら、呼び出し部分の1に戻ります。
これで関数の実行は終わりです。
結果は以下の通りです。1 では次の例をみてみましょう。11 結果は以下の通りです。
会計は1333.5です
会計は1333.5です
会計は1333.5です
この例では3回関数を呼び出していますが、関数はこのように何回呼び出しても問題ありません。
次に仮引数にデフォルト引数を設定する方法について説明します。
デフォルト引数とはあらかじめ仮引数に設定する値です。
以下がデフォルト引数を使った例です。11
仮引数内に1と書いてありますが、これがデフォルト引数です。
デフォルト引数を1つ記述しましたので、実引数は1のように1つ減らして2つでOKです。
デフォルト引数を設定する上で注意してほしいことはデフォルト引数は右端から設定していくことです。
ですので、以下の例のように左端だけ指定、他にも真ん中だけ指定、左端と真ん中だけ指定もダメです(紙面の都合でfunctionとshoppingを違う段に書いていますが通常は横一列で書いてください)11 もう一例みてみましょう。
デフォルト引数を複数設定する場合には右端から指定します。
この例では真ん中と右端の仮引数を設定しています。
またデフォルト引数を2つ設定したので、呼び出し側の実引数は1つになっています。

11
次は戻り値のある関数についての説明をします。
戻り値とは呼び出し元に返す値のことです。
関数の説明をする時に戻り値については以下のように説明しました。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。1 上の図を参考にしていただくと分かりますが、呼び出し元に値を返すにはreturnを使います。
そして、呼び出し元に戻った戻り値は変数や配列に代入されて、printなどで出力されることになります。
では例をみてみましょう。1 「return $i;」の$iには1と言う値が入っていますので、この値をreturnで呼び出し元に返します。
そして、その戻り値は$qwに代入され、最終的には1で出力されます。1