PHP Walker サイトマップ | お問合せ | このサイトについて
 PHP ウォーカー
 
はじめに
PHP基本
日付・時刻
関数
・ユーザー定義関数(function)
・引数の値渡しと参照渡し
・変数の有効範囲(変数のスコープ)
・別ファイルを読み込む(require、include)

 変数の有効範囲(変数のスコープ)
通常、関数外で定義された変数の値は関数外でのみ、関数内で定義された変数は関数内でのみ使用可能です。
正確には使用可能ですが全く別の変数として扱われます。
ソースコード
$i = 10;

function func1 () {
    $i = $i * 2;
}

function func2 () {
    global $i;
    $i = $i * 2;
}

function func3 () {
    $GLOBALS["i"] = $GLOBALS["i"] * 2;
}

func1();
print "\$i の値は $i です。<br>\n";
func2($i);
print "\$i の値は $i です。<br>\n";
func3($i);
print "\$i の値は $i です。<br>\n";
出力結果

$i の値は 10 です。
$i の値は 20 です。
$i の値は 40 です。

func1 では関数内の変数 $i は関数内でのみ有効ですので関数外の $i の値は変化なく「10」のままです。
func2 の中では $i の値を使うために global で宣言しています。こうすることで func2 の中の変数 $i の値は1行目で代入されている「10」となり、関数内で2倍され「20」になります。
func3 ではPHP内部で定義されている連想配列 $GLOBALS を使って func2 と同等の処理を行っています。$i の値は func2 で「20」になっているので func3 ではまた2倍され「40」となります。


サイトポリシー | 新着情報 | 掲示板 | お問合せ
Copyright © エンジニアウォーカー All Rights Reserved.