ホームページ  >  記事  >  バックエンド開発  >  PHP のグローバル変数について話します。

PHP のグローバル変数について話します。

little bottle
little bottle転載
2019-04-22 17:38:333007ブラウズ

ご存知のとおり、PHP 関数でグローバル変数を使用する場合、1 つは スーパー グローバル変数 $GLOBALS を使用する方法、もう 1 つは ## を使用する方法です。 # 関数 Global キーワード宣言では、スーパー グローバル変数 $GLOBALS の使用方法は誰もが知っています。今日は、グローバル メソッドを使用して変数を宣言する方法について説明します。

次の例を見てみましょう:

$a = 1;
$b = 2;
function test() {
    global $a, $b;
}
test();

test() 関数を実行すると、メモリ内の変数のステータスはどうなるでしょうか?以下の図に示すように

#テスト関数を宣言しました。test() 関数が呼び出されると、global は 2 つのローカル変数 $a、$b を宣言します。このとき、一時変数 $a と $b は、グローバル変数 $a と $b への参照と等価になります。したがって、関数内でローカル変数 $a と $b の値を変更すると、グローバル変数の値を変更することと同じになります。

$a = 1;
$b = 2;
function test() {
    global $a, $b;
    $a = 11;
    $b = 12;
    unset($a);
    unset($b);
}
test();
echo $a;
echo &#39;<br>&#39;;
echo $b;

ブラウザ上で出力を出力:

11
22

上記のコードでは unset() も使用されており、グローバル変数 $a、$b の値はエコー出力を通じて出力できます。これは、() 関数の global キーワードを通じて宣言された $a と $b はローカル変数のみであり、unset() はローカル変数とグローバル変数の間の参照を切断するだけであることも示しています。

別の状況を見てみましょう。テスト関数で宣言した変数がグローバル変数にない場合はどうなるでしょうか?

最初に結論について話しましょう:

関数内で global キーワードを使用して宣言された変数がグローバル スコープ内に同じ名前の変数を持たない場合、同じ名前のグローバル変数はが最初に作成され、次に関数内でローカル変数が作成されます。グローバル変数の参照をローカル変数にポイントします。

function test() {
    global $a, $b;
    $a = 11;
    $b = 22;
    unset($a);
    unset($b);
}
echo $a;
echo &#39;<br>&#39;;
echo $b;

ブラウザを介した出力:

11
22

上記のコードでは、global を使用してテスト関数内で変数 $a、$b を宣言していますが、グローバル スコープはそうではありません。 $ a と $b を宣言しますが、global は最初にグローバル変数 $a と $b を作成し、次にテスト関数内で $a と $b を作成し、次にグローバル変数の参照をテスト関数のローカル変数にポイントします。 。したがって、関数内で $a と $b の設定を解除しても、グローバル変数には既に 2 つの変数が存在するため、関数の実行後に $a と $b を出力することができます。

したがって、最終的に次の結論を導き出すことができます。

グローバルを使用して関数内で変数を宣言する場合、最初に同じ名前の変数が関数内に存在するかどうかがチェックされます。このグローバル変数の参照は、global を使用して宣言された同じ名前のローカル変数を指します。グローバル スコープ内に同じ名前の変数がない場合は、最初に同じ名前のグローバル変数を作成し、次にローカル変数を作成して、グローバル変数の参照をローカル変数にポイントします。

関連チュートリアル:

PHP ビデオ チュートリアル

以上がPHP のグローバル変数について話します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。