1

global $uservs$user = $GLOBALS['user']

「グローバル$var」を使用してグローバル変数を取得することにより、グローバル変数のコピーを取得しますか、それともそのグローバル変数への参照を取得しますか?

global $user;

$ userはグローバルオブジェクトのコピーですか、それとも実際のグローバル変数への参照ですか?

ありがとう。

4

4 に答える 4

2

これを使用するとglobal $var;、常にグローバル変数を参照するローカル変数が得られます。

次のコード:

$var = 1;

function test() {
  global $var;

  $var++;
}

test();
echo $var;

と同等です:

$var = 1;

function test() {
  $GLOBALS['var']++;
}

test();
echo $var;
于 2012-06-09T18:06:48.917 に答える
2

「var」という名前のグローバル変数を使用global $varすると、関数のローカルスコープにインポートされます(これは参照を作成することによって行われます)。

$GLOBALSこれは、スーパーグローバル変数とは異なります。それは、スコープに関係なく常にどこにでもあります。

ただし、それは参照とは異なります。変数と、これが変数への参照でどのようになっているのかを本当に理解したい場合は、Derick RethansによるPDF:PHPでの参照:詳細な外観(PDF)をお勧めします。

于 2012-06-09T18:17:37.553 に答える
0

$ GLOBALSのドキュメントの引用:

スクリプトのグローバルスコープで現在定義されているすべての変数への参照を含む連想配列。変数名は配列のキーです。

簡単なテストケース:

$foo = "foo";
echo $GLOBALS["foo"];         // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo;                    // bar
于 2012-06-09T18:08:46.473 に答える
0

ない。コンパイラーは、その変数名の使用法をグローバルスコープ内の対応する変数に解決します。

于 2012-06-09T18:12:25.140 に答える