/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ] ~ [] ~

PHP:関数

●概要

関数も使用できます。
// 関数の定義 function test($a, $b) { echo $a.' '.$b.'<br>'; return 10; } // 関数を使う $result = test("function", "test"); echo $result;
のようにします。 test が関数名で、$a と $b が引数です。 引数はいくつでも構いません。 return 10 で呼び出し元にデータを返しています。 return 値には連想配列も使えるので、 複数のデータをまとめて返すのも簡単です。

●デフォルト引数

引数にはデフォルト値を指定できます。
引数 = デフォルト値
とします。

function test($a, $b="default") {
}

test("function");
で呼び出すと、
$b には、関数側で定義した "default" が入ります。

引数を省略できるのは、
右端から連続した引数だけです。

test(/* 指定しない */, "function"); は使えません。

●リファレンス渡し

通常、引数で渡したデータを変更しても、
その変更が有効なのは、その関数の中だけです。
# 関数内部の操作で、呼び出し元の変数は変化しません。

が、
引数の前に & を付ける事で、
呼び出し元の引数の値を変更できます。
// 関数の定義 function test(&$a) { // $num と $a が結びつく $a += 10; // $num を +10 したのと同様 } $num = 1; test($num); echo $num;
呼び出し元 $num に 1 を入れて、関数 test を呼びます。 &$a によって、$num と $a が結び付けられます。 関数内部で $a を変更する事で、 $num そのものを変更する事と同じになります。

●変数のスコープと global

変数には、スコープ (変数の改変・参照できる範囲) があります。

PHP には、変数の宣言がないので、
変数のスコープは、その変数が初めて登場した場所で決まります。

例えば、
$a = 1; // グローバル function test() { echo $a; // ローカル (新規変数として扱われる) } test();
上記の場合、 ローカルの $a と、グローバルの $a は別の変数です。 関数 test 内の $a は、新規変数になるので、 値は、NULL のままです。 この振る舞いは、C言語とは全く異なります。 関数 test から、グローバルの $a を参照したい場合は、 global キーワードを使用します。
$a = 1; // グローバル function test() { global $a; echo $a; // グローバルの $a を参照する。 } test();
この場合は、1 が表示されます。 とかく、global を忘れるので、注意しましょう。
/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ]