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

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

little bottle
リリース: 2023-04-06 08:56:02
転載
3037 人が閲覧しました

ご存知のとおり、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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート