関数とは、ある機能を実現する為のプログラムを、
他の部分から利用できるよう
特定の動作をまとめて入れておく箱のようなイメージです。
組み込み関数
組み込み関数とは、
- ランダムな値を出すrand関数
- 実行時の年月日を出力できるdate関数
などの、
PHPで提供している関数のことを言います。
ユーザー定義関数
ユーザー定義関数とは、ユーザーが独自に処理を記述した関数、ゆうなれば自作の関数です。
ユーザー定義関数はfunctionを指定することで、使用することができます。
ユーザー定義関数(自作関数)の書き方
引数なしver
<?php
//関数の定義
function 関数名() {
//処理
}
//関数の呼出し
関数名();
?>
定義はfunction 関数名()の形式で記述します。
関数の呼出しは「関数名()」で指定します。
また、{ }で囲まれた内側の処理範囲をブロックといいます。
引数ありver
<?php
//関数の定義
function 関数名($引数1) {
//処理
}
//関数の呼出し
関数名($引数1);
?>
functionに引数を指定する場合は、
☆functionに代入される引数(ゆうなればデフォルト)
例) $a,$b
☆呼び出す側に代入したい引数(出力したい値)
例) $パン,バナナ
を定義します。
使い方
引数なしver
<?php
//関数の定義
function eat(){
echo 'tabekake blog';
}
//関数の呼出し
eat();
?>
実行結果
tabekake blog
このプログラムでは、
①関数の呼出し処理であるeat()が実行 ②function eat()に処理がとぶ ③function eat()ブロック内に記述されている処理が実行
という処理がされました。
引数ありver
<?php
//関数の定義
function num($val){
echo $val + 10;
}
$num = 10;
//関数の呼出し
bum($num);
?>
実行結果
20
このプログラムでは、
① 関数の呼出し処理であるnum($val)に引数$numを指定して実行 ② function num($val)に処理が飛ぶ ③ function num($val)の中で引数$valの演算結果を出力する
という処理がされました。
引数を指定することで、
関数の内部で引数の値を元にした処理をすることができます。
また、一度定義すると、何度でも呼び出しが可能です。
引数の型を指定
関数は、引数の型を指定することができます。
これをタイプヒンティングと言います。
<?php
//関数の定義
function num(Int $val){
echo $val;
}
//関数の呼出し
num(10);
num('tabekake'); //エラー
?>
実行結果
Fatal error: Uncaught TypeError: Argument 1 passed to foo() must be of the type integer,....
引数の型をInt型に指定しています。
なので、引数に文字列「num(‘tabekake’)」を渡すと、
引数の型に一致しないためエラーが発生します。
引数にデフォルト値を設定
関数の引数にはデフォルト値を設定することができます。
<?php
//関数の定義
function num($val = 100){
echo $val.'<br>';
}
//関数の呼出し
foo(10);
foo();
?>
実行結果
10
100
関数呼出し時に引数が正しくセットされていれば、
セットされた値が出力されます。
関数呼出し時に引数が正しくセットされていなければ、
初期値が出力されます。
返り値を取得する
関数内では、独立した処理を実行することが可能です。
関数内の処理結果を取得したい場合、
returnオプションを指定して返り値を取得することができます。
関数の途中で処理を終了
関数の処理の途中で関数を終了する場合、
処理を戻したい箇所でreturnのみ指定することで関数が終了します。
<?php
function num($val){
if ($val < 100){
echo '関数の処理を終了する<br>';
return;
}
echo "returnにより表示されない。";
}
$value = 10;
num($value);
echo 'プログラム終了';
?>
処理結果
関数の処理を終了する
プログラム終了
このプログラムでは、
①値10を指定した変数$valueを関数numに渡す ②関数の中ではもし(if文)渡された値より100のほうが大きかったら、 if文内でreturnを指定して関数の処理を終了 ※そのため、if文の後の処理である「echo $val」が実行されない
という処理がされました。
真偽値を指定する。
関数の返り値には真偽値(bool型)を指定することもできます。
<?php
function food($array,$search){
if (in_array($search,$array)){
//指定した値が存在したらtrueを返す
return true;
}
else{
//指定した値が存在しなかったらfalseを返す
return false;
}
echo '<br>';
}
$food_array = ['pan', 'meat', 'Sweets', 'pasta', 'curry'];
$food1 = 'pan';
//関数の結果がtrueの場合はif文の処理を実行する
if (food($food_array, $food1)){
echo $food1.'は存在します。';
}
?>
出力結果
orangeは存在します。
このプログラムでは、
①関数foodに引数で配列と検索する値をif文の中で指定 ②関数の処理では、渡された引数の配列に指定した値が存在するかif文でin_array関数を使用してチェック 存在したらtrueを、存在しなかったらfalseを返す ③if文は評価がtrueの場合if文内の処理を実行しますので、関数呼び出し元の処理結果がtrueのためif文の処理を実行
という処理がされました。
コメント