関数とは?

PHP

関数とは、ある機能を実現する為のプログラムを、
他の部分から利用できるよう
特定の動作をまとめて入れておく箱のようなイメージです。

関数は大きく分けて2種類あります。
  • 組み込み関数 / あらかじめ用意され、標準で使用できる関数。
  • ユーザー定義関数 / プログラマーがコード上で定義・実装した関数。

組み込み関数

組み込み関数とは、

  • ランダムな値を出すrand関数
  • 実行時の年月日を出力できるdate関数

などの、
PHPで提供している関数のことを言います。

ユーザー定義関数

ユーザー定義関数とは、ユーザーが独自に処理を記述した関数、ゆうなれば自作の関数です。
ユーザー定義関数はfunctionを指定することで、使用することができます。

ユーザー定義関数(自作関数)の書き方

引数なしver

<?php
//関数の定義
  function 関数名() {
  //処理
}

//関数の呼出し
関数名();
?>

定義はfunction 関数名()の形式で記述します。
関数の呼出しは「関数名()」で指定します。

また、{ }で囲まれた内側の処理範囲をブロックといいます。

関数名をつける際のPoint
  • 動詞+名詞の組み合わせ。
    (パッと見でどのような内容の関数か分かりやすい)
  • アルファベット_アルファベット/数字

引数あり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文の処理を実行

という処理がされました。

コメント

タイトルとURLをコピーしました