変数スコープとは何ですか?
変数を使用する場合は、変数の定義規則に従う必要があります。変数は有効な範囲内で使用する必要があります。変数が制限された範囲を超えると、100 元の商品を購入できるのと同じです。そうなると100元は使えなくなります。 100ドルがこの変数に相当し、100ドル以内の範囲がスコープに相当します。次の表に示すように、
PHP 変数は、スコープの違いにより、ローカル変数、グローバル変数、静的変数に分けられます。内部定義された変数の場合、スコープはそれらが配置されている関数のスコープです
すべての定義された関数の外側の変数の場合、スコープは PHP ファイル全体ですが、ユーザー定義内で使用することはできません機能。ユーザーがユーザー定義関数内でグローバル変数を使用できるようにするには、global | キーワードを使用してグローバル変数静的変数 |
static | を使用して変数を宣言し、定義する変数の前にキーワード static を置く必要があります|
関数内で定義された変数のスコープは、変数が定義される関数です。関数の外に値を代入すると、まったく別の変数とみなされます。変数が宣言された関数を終了すると、変数とその対応する値はクリアされます。 | 例 |
<?php header("content-type:text/html;charset=utf-8"); $exam= "在函数外定义"; //声明全局变量 function add(){ $exam="在函数内定义"; //声明局部变量 echo "在函数内输出的内容是:".$exam."<br/>"; //输出局部变量 } add(); //调用函数 echo "在函数外输出的内容是:".$exam; //输出全局变量 ?> ログイン後にコピー | 実行結果は次のとおりです。
次の例では、静的変数と通常の変数を同時に使用して、2 つの関数の違いを確認します。 コードは次のとおりです。結果:
詳細な例の説明: カスタム関数 zdy() は 1 から 10 までの合計 10 個の数値を出力しますが、zdy1() 関数は 10 個の 1 を出力します。静的変数 $message と、zdy1() 内の関数 $message は通常の変数です。両方の変数は 0 に初期化され、2 つの関数はそれぞれ for ループを使用して呼び出されます。その結果、関数 zdy() は呼び出された後も静的変数 $message に値を保持します。静的変数の初期化は、関数が初めて呼び出されたときにのみ実行され、将来は初期化されなくなります。関数 zdy1() が呼び出された後、その変数 $message は元の値を失い、0 に再初期化されます。
グローバル変数はプログラム内のどこからでもアクセスできますが、ユーザー定義関数内では使用できません。ユーザーがユーザー定義関数内でグローバル変数を使用できるようにする場合は、global キーワードを使用してグローバル変数を宣言します
例
以下は、カスタム関数にグローバル変数を適用する場合とグローバル変数を適用しない場合の比較です。この例では、ユーザー定義関数 lxt() の 5 行目と 7 行目で 2 つのグローバル変数 $zy と $zyy が定義されていますが、プログラムの出力結果は $zyy
の値のみです。 「PHP Chinese website 」。グローバル変数 $zyy が 6 行目の global キーワードで宣言されているためです。 5 行目には出力はなく、$zy は 2 行目の $zy とは関係ありません。 コード例は次のとおりです。
<?php function zdy0(){ static $message = 0; //初始化静态变量 $message+=1; echo $message." "; } function zdy1(){ $message = 0; //初始化静态变量 $message+=1; echo $message." "; } for ($i=0;$i<10;$i++) zdy0(); //输出1~10 echo "<br>"; for ($i=0;$i<10;$i++) zdy1(); //输出10个1 echo "<br>"; ?>
コードの実行結果:
これは、グローバル変数を適用するかどうかです。変数の違いについては、次のセクションで「
変数変数」について説明します
おすすめの関連ビデオチュートリアル: 「php.cn Dugu Jiijian (4)-php ビデオチュートリアル」
変数のスコープ
以上がPHP変数スコープの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。