関数

関数とは

  • 関数とは、「機能単位の処理のひとかたまり」のことで、プログラムは関数の組み合わせによって、構成されています
  • プログラムのソースが長文で複雑になった場合、機能別にいくつかの関数に分割することによって、分かりやすく、修正しやすいプログラムとなります
  • 標準関数と同様でプログラムロジックの再利用ができるようになります

関数の作成

  • 自分で作る関数は機能単位で作成します
  • その機能のプログラムを再利用できるようにするためです
関数の構文

function 関数名( 【引数1, 引数2, 引数3・・・】 ) {
   処理;
【return文;】
}

<?php

// 関数

// 引数
// 戻り値

function sayHi($name = 'taguchi') {
    return 'hi!' . $name;
}

echo sayHi();

// sayHi( 'tanaka' );


関数名の定義

  • 関数には関数名が必ず必要です
  • 関数の名前を付けます
  • 関数に名前を付けることによって他のプログラムで呼び出して利用することができるようになるのです
  • 関数名は任意ですが、予約語PHPで既に使用している関数名など)は使用しないようにします
  • また、関数の機能がイメージできるような名前にします


引数用の括弧()を記述

  • 関数名の後ろには、「()(括弧)」を書きます
  • これは、引数(値を受け取るための変数)を記述するためのものです


引数の定義

  • 引数用の括弧()の中に値の受け渡しが必要な数だけ、変数を定義します。ここでは2つ定義しています
  • 値の受け渡しがない場合は、定義する必要はありません


処理用の中括弧{}と処理の記述

  • 引数を受けるための「()(括弧)」の後は、「{}(中括弧)」を書きます
  • この中括弧の中にこの関数の処理内容を記述します
  • 関数の処理は、その関数の機能である処理内容を記述します
  • そして、計算結果やファイル内容など、処理結果を呼び出し元のプログラムに戻したい場合は、通常一番最後に、return文という構文を記述します
  • これを戻り値と呼びます

引数と戻り値

  • 引数と戻り値は、関数とその関数を利用するプログラムとの間でやりとりする値です
  • 値をやりとりすることによって、処理を進めていきます
  • 引数は、関数を呼び出すプログラムが引き渡す値です
引数
  • 引数は、実行するプログラムが関数に引き渡す値で、関数名の後にある「( )(括弧)」の中に記述します
  • 「( )(括弧)」の中に複数の変数を定義すれば、複数のデータを引き受けることができます。

関数名( 変数1, 変数2, 変数3,・・ )

  • 引数の値を持っている場合

function getAvg( $x, $y, $z ) { // 引数3つを引き受ける変数定義
・・・・・・・・ // この関数の処理内容を記述

return 戻り値;
}

  • 引数が無い場合

function getAvg( ) {
・・・・・・・・ // この関数の処理内容を記述

return 戻り値;
}

戻り値
  • 戻り値は、先に学習したように、関数の処理結果を呼び出し元のプログラムに戻す役割があります
  • 例えば、計算した結果、ファイルから取得したデータなどです
  • 関数の処理が記述されている中括弧{}の中の一番最後にreturn文として記述します

function 関数名( 引数1, 引数2, 引数3・・・) {
・・・・・・・・ // この関数の処理内容を記述

return 戻り値;// 処理した結果の値
}

  • 引数の$xと$yと$zの平均値を戻り値として返している場合
function getAvg( $x, $y, $z ) {  // 引数3つを引き受ける変数定義
    $avg = ( $x + $y + $z ) / 3; // この関数の処理内容を記述
    
    return $avg;// 戻り値
}


引数として点数の数字が引き渡されて、その点数を基に評価判定を行う関数です。戻り値として、評価判定のA、B、C、D、Eのどれかが戻されます。

function getHyoka( $tensu ) {  // 引数1つを引き受ける変数定義

    // 注意:変数$tensu、$hyokaは、{ }内でのみ使用可能です。

    if( $tensu >= 80 ) {
        $hyoka = 'A';
    }else if( $tensu >= 70 ) {
        $hyoka = 'B';
    }else if( $tensu >= 60 ) {
        $hyoka = 'C';
    }else if( $tensu >= 50 ) {
        $hyoka = 'D';
    }else{
        $hyoka = 'E';
    }
    
    return $hyoka;  // 戻り値
}


戻り値がない関数

  • 関数内で何らかの処理を行いますが処理結果を返さないケースです
  • 評価を取得する関数を変更して、評価結果を画面出力する関数にしています
  • 評価結果を表示するのみで戻り値はありません
function getHyoka( $tensu ) {// 引数1つを引き受ける変数定義

    // 注意:変数$tensu、$hyokaは、{ }内でのみ使用可能です。

    if( $tensu >= 80 ){
        $hyoka = 'A';
    }else if( $tensu >= 70 ){
        $hyoka = 'B';
    }else if( $tensu >= 60 ){
        $hyoka = 'C';
    }else if( $tensu >= 50 ){
        $hyoka = 'D';
    }else{
        $hyoka = 'E';
    }
    
    printf ( "評価は、%sです。", $hyoka );
}

関数の利用

  • 関数を利用することを、「関数を呼び出す」とも言います
  • 関数の呼び出し方は、処理の中でその関数名を記述し、引数があれば値を括弧()の中に記述、戻り値があれば戻り値を代入する変数を記述するだけです