PHP にはスーパーグローバル変数 $GLOBALS がありますが、あまり使われていません。この変数を適切に使用すると、作業をより効率的に行うことができます。この記事では主に、このスーパー グローバル変数の使用法と、$GLOBALS とグローバルの違いについて分析します。
$GLOBALS 定義: グローバル スコープで使用可能なすべての変数を指します (すべての変数を含むグローバル結合配列。変数の名前は配列のキーです)。他のすべてのスーパーグローバル変数とは異なり、$GLOBALS は次のとおりです。 in これは、PHP コード内のどこでも常に使用でき、$GLOBALS 変数の結果を出力することで知ることができます。
PHP ライフサイクルでは、関数本体の外で定義されたいわゆるグローバル変数を関数内で直接取得することはできません。関数本体内で外部定義されたグローバル変数にアクセスしたい場合は、グローバル宣言を通じてアクセスするか、$GLOBALS を直接使用します。例:
<?php $var1='www.Alixixi.com'; $var2='www.google.cn'; test(); function test(){ $var1='taobao'; echo $var1,'<br />'; global $var1; echo $var1,'<br />'; echo $GLOBALS['var2']; }
結果は次のように出力されます:
淘宝
www.Alixixi.com
www.google.cn
以下では、主に global と $GLOBALS の違いについて説明します。
$GLOBALS['var'] は外部グローバル変数そのものであり、global $var は外部 $var の同じ名前の参照またはポインタです。つまり、global はエイリアス変数を生成します。関数の実際の外部変数の代わりに、$GLOBALS[] は実際に外部変数を呼び出します。これらの変数は関数の内部と外部で常に一貫しています。例で説明してみましょう:
$var1=1; $var2=2; function test(){ $GLOBALS['var2']=&$GLOBALS['var1']; } test(); echo $var2;
印刷結果は 1 です
$var1=1; $var2=2; function test(){ global $var1,$var2; $var2=&$var1; } test(); echo $var2;
出力された結果は 2 です。出力結果が 2 になるのはなぜですか?実際には、$var1 の参照が $var2 の参照アドレスを指しているためです。結果として得られる物質の価値は変わりません。別の例を見てみましょう。
$var1=1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1;
$var1 が削除されたため、何も出力されません。
$var1=1; function test(){ global $var1; unset($var1); } test(); echo $var1;
出力された結果は 1 です。これは、エイリアス参照のみが削除され、値自体はまったく変更されていないことを証明します。つまり、グローバル $var は実際には $var=&$GLOBALS['var'] になります。これは外部変数を呼び出すための単なるエイリアスです。