変数のスコープは、変数が定義されているコンテキストに制限されます。ほとんどのセクションでは、すべての PHP 変数に対してスコープが 1 つだけあります。ただし、ユーザー定義関数では、ローカル関数スコープの概念が導入されます。この関数で使用される変数は、デフォルトでは関数のローカル スコープに制限されます。例:
$a = 1; /* グローバルスコープ */
Function Test () {
echo $a; /* ローカルスコープ変数への参照 */ }
このスクリプトは Any を引き起こしません。変数 "$a" の宣言がローカル変換に送信され、変数にはアクティブ スコープ内の値が割り当てられていないため、出力が得られます。これは、関数内で別途指定しない限り、グローバル変数が自動的に使用可能になる C とは少し異なることに気づくでしょう。グローバル変数の値を誤って変更してしまう可能性があるため、これによりプログラムで多くの問題が発生する可能性があります。 PHP では、この関数でグローバル変数を使用する場合は、関数内でグローバル変数を宣言する必要があります。例は次のとおりです。
$a = 1;
$b = 2;
global $a, $b;
Sum (); echo $ b;
上記のスクリプトでは「3」が出力されます。グローバル変数 $a と $b は関数内で宣言されており、これら 2 つの変数への参照はすべてグローバル変数に割り当てられます。関数が操作できるグローバル変数の数に制限はありません。
グローバル変数を受け入れる 2 番目の方法は、PHP の特殊な定義配列 $GLOBALS を使用することです。
$a = 1;
$b = 2; = $GLOBALS["a"] + $GLOBALS["b"];
Sum ();
$GLOBALS 配列は、変数の名前として「global」を使用します。グローバル変数は、この変数配列内の要素の値となります。
変数スコープに関するもう 1 つの重要な機能は、「静的変数」です。静的変数はローカル関数のアクティブなスコープ内にのみ存在しますが、プログラムがこのスコープを離れてもその値は失われません。次の例を参照してください:
Function Test () {
$a = 0;
この関数は、変数 $a を 0 に設定して出力します。 「0」なので、ほとんど効果がありません。式「$a++」は変数の値をインクリメントしますが、変数 $a は関数が終了するたびに消えます。現在の計算を失わずにカウント関数を使用するには、次の例に示すように、変数 $a を static に設定します。 a++; | }