Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

関数

関数について

返り値

関数の返り値を返す(return)

関数を実行した結果を得るためには、returnを使います。

returnで関数の実行結果を返す
<?php
    // 引数と100の乗算関数
    function kakezan( $number ) {

        return $number * 100;
    }

    // kakezan()関数を呼び出します
    echo kakezan( 4 );
?>

上記の関数では、計算式「$number * 100」の結果をreturnで返しています。よって、関数を呼び出したechoの出力結果に、kakezan()関数の計算結果が表示されます。

returnは複数の値を返すことができません。しかし、値ではなく配列を返すことによって、複数の値を返すことができます。

実行結果
400
返り値に配列を指定する
<?php
    // 返り値を配列で返します
    function kakezan( $number1, $number2 ) {

        $number1 = $number1 * 100;
        $number2 = $number2 * 1000;

        return array( $number1, $number2 );
    }

    // kakezan()関数を実行します
    list( $result1, $result2 ) = kakezan( 5, 6 );

    echo "$result1<br />n";
    echo "$result2";
?>
実行結果
500
6000

ファイルを読み込む

require文

よく使う関数は別ファイルに用意しておき、複数ページで共通に利用できるようにしておけば、同じ関数を何度もコードに書くよりは、はるかに手間が省けます。

別ファイルにまとめたプログラム処理を読み込むことができれば、開発の効率やメンテナンスの点で非常に有用です。

require()関数は、スクリプト内で別ファイルを読み込むことができます。

実際にスクリプト内で別ファイルを読み込んでみます。まず、読み込む対照の「language.php」ファイルを作成します。

language.phpのソース
<?php
    define( "language", "PHP" );
?>

次に、require()関数でlanguage.phpを読み込みます。

language.phpを呼び出すスクリプト
<?php
    require( "language.php" );
    echo language;
?>

上記のスクリプトでは、require文の引数に、読み込む対照のファイル名を渡しています。すると、このスクリプトが実行されるとき、指定されたlanguage.phpに置き換えられます。

実行結果
PHP
require_once文

require_once()関数は、require()関数と同様に、スクリプト内で別ファイルを読み込むことができます。ただし、 require()関数と異なる点は、require()関数は外部ファイルを取り込む回数に制限がないのに対して、require_once()関数は外部ファイルを1回だけ取り込みます。

例えば、「a.php」に「b.php」をrequire()関数で読み込んだ場合、「b.php」に「a.php」のrequire()命令が記述されていた場合、無限ループになってしまいます。

include文

require()関数と同様にinclude()関数も、スクリプト内で別ファイルを読み込むことができます。

これから記述するスクリプトは、ループ処理の中にinclude文を置いて、毎回異なるファイルを読み込むようにしています。

include文で繰り返し実行する(include.php)
<?php
    for( $i=1 ; $i<=3 ; $i++ ) {

        include( "test" . $i . ".php" );
    }
?>

上記のスクリプトでは、ループが実行されるたびに「test1.php」「test2.php」「test3.php」のファイルが存在した場合、各 phpファイルを読み込んでいます。読み込む対照の各phpファイルは、同章でtashizan関数、kakezan関数、warizan関数をそれぞれ定義したファイルです。

実行結果
100200300
include_once文

include_once()関数は、include()関数と同様に、スクリプト内で別ファイルを読み込むことができます。 include_once()関数も、require()関数とrequire_once()関数との違いと同様に、include_once()関数は外部ファイルを1回だけ取り込みます。

require()とinclude()の違い

require()とinclude()は、エラーの扱い方を除けば、その振る舞いは全く同じです。エラーが発生するとinclude()は「Warning」を出力しますが、require()を使用している場合は「Fatal Error」となります。

言い換えると、指定されたファイルが無い場合に処理を停止したい場合は、require()を使用した方が良いということになります。 include()を使用すると、読み込むべきファイルが存在しない場合も処理が続行されます。

具体的に、include()文で記述したスクリプトを使用して、実際に読み込むべきファイル「test2.php」が存在しない場合、require()とinclude()では結果にどのような違いが現れるかを試してみます。

存在しない「test2.php」をrecuire()で読み込む
<?php

    for( $i=1 ; $i<=3 ; $i++ ) {

        require( "test" . $i . ".php" );
    }
?>
実行結果
100

Warning: require(test2.php) [function.require]: failed to open stream:
No such file or directory in C:¥require.php on line 5

Fatal error: require() [function.require]: Failed opening required
'test2.php'(include_path='.;C:¥xampp¥php¥pear¥') in
C:\require.php on line 5

上記のスクリプトでは、「test1.php」を読み込んだ後、次に読み込もうとした「test2.php」が存在しないため処理を停止し、「Fatal Error」を表示しています。

存在しない「test2.php」をinclude()で読み込む
<?php
    for( $i=1 ; $i<=3 ; $i++ ) {

        include( "test" . $i . ".php" );
    }
?>
実行結果
100

Warning: include(test2.php) [function.include]: failed to open stream:
No such file or directory in C:¥include.php on line 5

Warning: include() [function.include]: Failed opening
'test2.php'for inclusion (include_path='.;C:¥xampp¥php¥pear¥') in
C:\include.php on line 5

300

上記のスクリプトでは、「test1.php」を読み込んだ後、次に読み込もうとした「test2.php」が存在しないため「Warning 」を表示しています。しかし、処理は停止することなく、次の「test3.php」を読み込み、最後まで処理が続行されました。