PHPにおけるグローバル変数globalと$GLOBALS[]の区別解析

1035 ワード

一、例を挙げて比較する
例1:
 
  
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>

$var 1が削除されたため、何も印刷されていません.
例2:
 
  
$var1 = 1;
function test(){
global $var1;
unset($var1);
}
test();
echo $var1;
?>

意外にも1を印刷しました.削除されたのは別名参照のみで、それ自体の値は変更されていません.
二、global$varを解釈するのは実は&$GLOBALS['var']であり、外部変数の別名を呼び出すだけである.
上記のコードの$var 1と$GLOBALS['var 1']は、2つの異なる変数ではなく、同じ変数を指します.
PHPのグローバル変数はC言語と少し違います.C言語では、ローカル変数に覆われない限り、グローバル変数は関数でアクティブに有効になります.これはいくつかの問題を引き起こす可能性があり、一部の人はうっかりグローバル変数を変える可能性があります.PHPでグローバル変数を関数に適用する場合はグローバルとしてglobalで明示する必要があります.
PHPのGlobal変数の役割は、グローバル変数を定義することですが、このグローバル変数はウェブサイト全体に適用されるのではなく、includeまたはrequireのすべてのファイルを含む現在のページに適用されます.
三、結論1.$GLOBALS['var']は外部のグローバル変数そのものである
2.global$varは、外部$varの同名参照またはポインタです.