PHPの基礎 - 関数

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

関数とは、いくつかの処理をまとめて名前を付けて定義したものである。

関数には、組み込み関数とユーザー定義関数の2種類がある。
使い方は同じであるが、組み込み関数はPHPで予め用意された関数であり、ユーザ定義関数は自身が定義した関数である。

ここでは、ユーザ定義関数について記載する。


関数の使用方法

関数の具体的な使用方法を記載する前に、関数を使用する場面について記載する。

以下の例では、数値を判定して出力する部分を関数にして、必要な時に呼び出している。
繰り返し使用する処理を関数にして、必要な時に呼び出す。

 function check($kamoku, $Num)
 {
    print $kamoku.'の結果:';
    if($Num >= 80)
    {
       print '80以上';
    }
    else
    {
       print '80未満';
    }
 }
 
 $Math = 84;
 $Eng = 62;
 $Jp = 78;
 
 check('数学', $Math);
 check('英語', $En);
 check('国語', $Jp);



関数の定義と実行

関数の定義

まず、関数の定義を記載する。

基本的な書式は、以下の通りである。

function 関数名(引数1, 引数2, ...)
{
   実行される処理;
}


関数名として使用できる文字は、先頭がアンダーバーかアルファベットで始まり、その後にアンダーバー、数字、アルファベットが続く。
変数名とは異なり、大文字・小文字の区別は無いので注意すること。

引数は、関数に値を渡す場合に使用するものであり、パラメータとも呼ばれる。

関数の実行

関数を実行する時の書式は、以下の通りである。

関数名();
または
関数名(引数1, 引数2, ...);


また、関数を実行すると戻り値として計算結果を返す場合がある。
その場合、以下のように記述することにより、関数からの戻り値を変数に代入することができる。

変数名 = 関数名(引数1, 引数2, ...);


※注意
PHPにおいて、以下のように、関数の定義は関数の実行よりも後で定義してもよい。

 hello();
 
 function hello()
 {
    print 'hello';
 }



引数

関数を呼び出す時に関数に渡す値を引数と呼ぶ。
引数を使用することにより、関数を実行するたびに一部の値を変化させて実行することができる。

以下の例では、最初に関数を実行する時、引数として"田中"を渡している。
関数側では、変数nameに"田中"という値が格納されて、関数内の処理が実行される。
次に、変数nameに"鈴木"という値が格納されて、関数内の処理が実行される。

 function greeting($name)
 {
    print 'こんにちは。'.$name.'さん。';
    print 'お元気ですか?';
 }
 
 greeting('田中');
 greeting('鈴木');


複数の引数

引数は、必要な数だけ指定することができる。
複数の引数を指定する場合は、カンマ(,)で区切り記述する。

書式は以下の通りである。
呼び出し元で指定した順に、引数に値を格納する。値1は引数1、値2は引数2に格納されて関数内の処理が実行される。

function 関数名(引数1, 引数2, ...)
{
   // ...
}

関数名(値1, 値2, ...);


以下の例では、2つの値の平均値を出力している。

 function heikin($num1, $num2)
 {
    $result = ($num1 + $num2) / 2;
    print '平均は'.$result.'です';
 }
 
 heikin(10, 8);
 heikin(3, 23);



戻り値

関数では、return文を使用して、数値、文字列、配列等の演算結果を呼び出し元に返すことができる。

戻り値を返す場合、関数名(引数1, 引数2, ...)の評価が戻り値となる。
戻り値は、変数 = 関数名(引数1, 引数2, ...)のように変数に対して格納する。

以下の例では、変数に戻り値を格納する場合と関数の実行を直接記述している。

 function plus($num1, $num2)
 {
    $sum = $num1 + $num2;
    return $sum;
 }
 
 $sum = plus(10, 8);
 print '加算の結果は'.$sum.'です';
 
 print '加算の結果は'.plus(7, 14).'です';


なお、引数とは異なり、戻り値として指定できる値は1つのみである。
ただし、戻り値として配列も指定できるため、配列を返すことで実質的に複数の値を返すことも可能である。


別のPHPファイルの関数を呼び出す (関数のライブラリ化)

関数をユーティリティ化 / ライブラリ化して、外部のPHPファイルに記述する方法として、requirerequire_onceincludeinclude_once関数がある。
外部のPHPファイルの関数を呼び出す前に、上記の関数を使用して外部ファイルを読み込むことにより、外部のPHPファイルの関数を呼び出すことができる。

 // index.phpファイル
 
 <?php
   require_once 'utils.php'; //関数呼び出しより手前に記述する
 
   echo('sum: '.utl_sum(12,5).'<br/>');
   echo('mul: '.utl_mul(12,5).'<br/>');
   echo('div: '.utl_div(12,5).'<br/>');
   echo('sub: '.utl_sub(12,5).'<br/>');
 ?>


 // utils.phpファイル
 
 <?php
   function utl_sum($a,$b)
   {
     return $a + $b;
   }
 
   function utl_sub($a,$b)
   {
     return $a - $b;
   }
 
   function utl_mul($a,$b)
   {
     return $a * $b;  
   }
 
   function utl_div($a,$b)
   {
     return $a / $b;
   }
 ?>