PHP における global と $GLOBALS[] の違い
多くの人は、global と $GLOBALS[] は書き方が違うだけだと思っていますが、そうではありません。
公式の説明によると、
1.$GLOBALS['var'] は外部グローバル変数そのものです
2.global $var は、外部 $var と同じ名前の参照またはポインタです。
例を挙げてみましょう:
通常の印刷結果は 1 です
予期しない印刷結果は 2 です
印刷結果が 2 なのはなぜですか?実際には、$var1 の参照が $var2 の参照アドレスを指しているためです。結果として得られる物質の価値は変わりません。
別の例を見てみましょう。
$var1 が削除されたため、何も出力されません。
誤って 1 を印刷してしまいました。これは、エイリアス参照だけが削除され、値自体は一切変更されていないことを示しています。
わかりますか?
言い換えると、グローバル $var は実際には $var = &$GLOBALS['var'] です。外部変数のエイリアスを呼び出すだけです