PHPではJavaやCのようなブログラミング言語同様に、自分で定義した関数(function)を作成することができます。
この記事では、
・関数とは
・関数の使い方
という関数の基本的な使い方を解説し、
・return(返り値)とは
・returnの基本的な使い方
で関数の返り値の指定方法を解説いたします。
今回はそんな関数や返り値の使い方について、わかりやすく解説します!
関数とは
関数とは値を演算したり、条件分で判断したり、データを登録したりなど、特定の動作をまとめて入れておく箱のようなイメージです。
PHPでは関数は大きく分けて2つあります。
・組み込み関数
PHPで提供している関数(配列を結合するarray_merge関数や文字列検索を行うstrposなど)。
・ユーザー定義関数
ユーザーが独自に処理を記述した関数。
この記事では主に後者のユーザー定義関数について解説していきます。
ユーザー定義関数はfunctionを指定することで、使用することができます。
関数の書き方
ユーザー定義関数(function)は以下のように定義します。
functionの書き方1:引数なし
//関数の定義 function 関数名() { ・・・処理・・・ } //関数の呼出し 関数名();
関数の定義は「function 関数名()」の形式で記述します。
関数の呼出しは「関数名()」で指定します。
functionの書き方2:引数あり
//関数の定義 function 関数名($引数1 …) { ・・・処理・・・ } //関数の呼出し 関数名($引数1 …);
functionに引数を指定する場合は、呼び出す側でも引数に値をセットしておく必要があります。
関数の使い方
ここではfunctionを指定した関数の使い方を見ていきましょう。
引数なし
まずは引数を指定しない簡単な関数のプログラムを紹介します。
サンプルプログラム
//関数の定義 function foo(){ echo 'samurai engineer'; } //関数の呼出し foo();
実行結果:
samurai engineer
このプログラムでは、
① 関数の呼出し処理であるfoo()が実行される
② function foo()に処理が飛ぶ
③ function foo()の中に記述している処理が実行される
となります。
引数あり
続けて引数を指定した関数の使い方を見ていきましょう。
関数に引数を指定することで、渡された関数の内部で引数の値を元に処理をすることができます。
サンプルプログラム1
//関数の定義 function foo($val){ echo $val + 100; } $num = 100; //関数の呼出し foo($num);
実行結果:
200
このプログラムでは、
① 関数の呼出し処理であるfoo($val)に引数$numを指定して実行
② function foo($val)に処理が飛ぶ
③ function foo($val)の中で引数$valの演算結果を出力する
となります。
また、関数は一度定義すれば何度でも呼び出すことができます。
以下の処理では配列をループで回して、要素の値を引数として配列を呼出しています。
サンプルプログラム2
//関数の定義 function foo($val){ echo $val.'<br>'; } //配列の定義 $array = [100, 200, 300]; foreach ($array as $value) { //関数の呼出し foo($value); }
実行結果:
100 200 300
ここでは、簡単な関数のプログラムを紹介しましたが、より応用的な関数の処理についても知りたい方は、以下の記事で詳しく解説しています!
引数の型を指定する
関数には引数の型を指定(タイプヒンティング)することができます。
引数の型を指定しておけば、指定した型以外の型が引数で渡されたときにエラーを返します。
サンプルプログラム
//関数の定義 function foo(Int $val){ echo $val; } //関数の呼出し foo(100); foo('test'); //エラー
上記のサンプルでは関数で引数の型をInt型に指定していますが、引数に文字列「foo(‘test’)」を渡すと、引数の型に一致しないため、
「Fatal error: Uncaught TypeError: Argument 1 passed to foo() must be of the type integer, ~」
のエラーが発生します。
引数にデフォルト値を設定する
関数の引数にはデフォルト値を設定することができます。
呼び出し元によってはNULLを渡してしまう可能性があるときなどに、あらかじめデフォルト値をセットしておけば、NULL参照のエラーを防ぐことができます。
サンプルプログラム
//関数の定義 function foo($val = 10){ echo $val.'<br>'; } //関数の呼出し foo(100); //100 foo(); //10
実行結果:
100 10
実行結果から分かるように関数呼出し時に正しく値がセットされているときは、関数の定義で初期化した値は適用されません。
return(返り値)とは
PHPでは、関数を使用するときにfunctionを指定して関数名を定義します。
関数を使用すれば、関数内で独立した処理を実行することが可能となりますが、関数内の処理結果を取得したい場合は、returnオプションを指定して返り値を取得することができます。
また、関数内でreturnを指定すれば、関数の処理の途中でも任意の場所で関数を呼び出し元に制御を戻すことができます。
returnは以下のように指定します。
returnの書き方:
function 関数名() { …実行処理… return $返り値; }
なお、関数を途中で終了する場合は、返り値を指定せずに任意の場所でreturnのみを記述することで制御が呼び出し元に戻ります。
returnの使い方
ここでは実際に関数にreturnを指定して関数の処理を途中で終了したり、関数の返り値を取得する処理について見ていきましょう。
基本処理
前述したように関数内での実行結果をreturnオプションを指定して、返り値として取得することができます。
以下に直径の値を関数の引数に渡して、関数の中で円周の長さを計算して計算結果を返す簡単なサンプルを紹介します。
サンプルプログラム1:数値を返す
<?php function GetPI($diameter){ //円周の長さを求める $pi = $diameter * 3.14; //計算結果をreturnで返す return $pi; } //直径を指定 $value = 5; //引数に直径の値を指定して結果を取得する $sum = GetPI($value); echo '円周の長さ :'.$sum; ?>
実行結果:
円周の長さ :15.7
サンプルでは、円周の長さを関数内で取得するために引数で直径の値を渡しています。
関数GetPIでは引数で渡された直径の値を元に円周の長さを計算して、計算結果をreturnで返しています。
このように関数の演算結果を呼び出し元の処理で取得するには、returnを使用すると便利であることがわかりますね!
また、returnで指定する返り値には文字列や配列を指定することも可能です
以下のサンプルでは、戻り値に文字列Stringを指定しています。
サンプルプログラム2:文字列を返す
//関数の定義 function getString($text){ //結合した文字列を返す return $text.'engineer'; } //関数の呼出し $str = getString('samurai '); echo $str;
実行結果:
samurai engineer
続いて、戻り値に配列を指定するサンプルです。
サンプルプログラム2:配列を返す
function GetFruits(){ $fruits_array = ['apple', 'orange', 'melon', 'banana', 'pineapple']; //配列を返り値として指定する return $fruits_array; } $fruits = GetFruits(); print_r($fruits);
実行結果:
Array ( [0] => apple [1] => orange [2] => melon [3] => banana [4] => pineapple )
関数の途中で処理を終了する
関数の処理の途中で関数を終了する場合は、処理を戻したい箇所でreturnのみ指定することで関数が終了します。
以下にreturnを指定して処理を終了する方法を記述します。
サンプルプログラム:
<?php function foo($val){ if ($val < 20){ echo '関数の処理を終了する<br>'; return; } echo $val; } $value = 10; foo($value); echo 'プログラム終了'; ?>
実行結果:
関数の処理を終了する プログラム終了
このサンプルでは値10を指定した変数を関数fooに渡しています。
関数の中ではif文で渡された値より20のほうが大きかったら、if文内でreturnを指定して関数の処理を終了しています。
そのため、if文の後の処理である「echo $val」が実行されていません。
真偽値を指定する
関数の返り値には真偽値(bool型)を指定することも可能です。
例えば関数内で指定した値が存在した場合はTRUEを、存在しなかったらFALSEを取得したい場合にreturnで真偽値の値を指定します。
以下に指定した値の存在有無の結果で真偽値を返す方法を記述します。
サンプルプログラム:
<?php function fruits($array, $search){ if (in_array($search, $array)){ //指定した値が存在したらtrueを返す return true; } else{ //指定した値が存在しなかったらfalseを返す return false; } echo '<br>'; } $fruits_array = ['apple', 'orange', 'melon', 'banana', 'pineapple']; $fruits1 = 'orange'; //関数の結果がtrueの場合はif文の処理を実行する if (fruits($fruits_array, $fruits1)){ echo $fruits1.'は存在します。'; } ?>
実行結果:
orangeは存在します。
サンプルでは関数fruitsに引数で配列と検索する値をif文の中で指定しています。
関数の処理では、渡された引数の配列に指定した値が存在するかif文でin_array関数を使用してチェックし、存在したらtrueを、存在しなかったらfalseを返します。
if文は評価がtrueの場合if文内の処理を実行しますので、関数呼び出し元の処理結果がtrueのためif文の処理を実行しています。
in_array関数の使い方については、以下の記事でも詳しく解説していますので、ぜひ参考にしてください!
まとめ
ここでは、PHPでのユーザー定義関数(function)や返り値(return)について、
・関数とは?
・関数の基本的な使い方
・返り値(return)とは
・returnの基本的な使い方
などについて解説しました。
関数の処理や処理結果をreturnで取得することはよくありますので、この機会に覚えておきましょう。
functionやreturnの使い方を忘れてしまったら、この記事を思い出してくださいね。