ホームページ >バックエンド開発 >PHPチュートリアル >PHP グローバルおよび $GLOBALS[] でのグローバル変数の適用

PHP グローバルおよび $GLOBALS[] でのグローバル変数の適用

WBOY
WBOYオリジナル
2016-06-13 13:13:46859ブラウズ

PHP グローバルおよび $GLOBALS[]
でのグローバル変数の使用

PHP でプロジェクトを開発する場合、たとえば、一部の Web サイト構成情報はサイト全体に共通であるため、1 か所で設定し、複数の場所で呼び出すことができます。変数をグローバル変数として定義するには、グローバルと $GLOBALS[] の 2 つの方法があります。 global と $GLOBALS[] の書き方が違うだけだと思っている人も多いですが、実際には違いがあります。

まずグローバルを見てみましょう
PHP のグローバル変数の分析は次のとおりです。 Global の役割はグローバル変数を定義することですが、このグローバル変数は Web サイト全体ではなく、現在のページ (include または require 内のすべてのファイルを含む) に適用されます。

次の PHP コードを見てください:

$a=123;
function test1()
{
global $a;   //如果不把$a定义为global变量,函数体内是不能访问$a的
echo $a; //123
}
test1();

global $b;
$b=456;
function test2()
{
var_dump($b);    //NULL
}
test2();

function test3()
{
global $c;
$c=789;
}
test3();
echo $c;   //789

? コードから要約すると、関数本体内で定義されたグローバル変数は関数本体外で使用できますが、関数本体外で定義されたグローバル変数は関数本体内では使用できません。

$GLOBALS[] を見てみましょう

$var1 = 1;  
$var2 = 2;  
function test1(){  
     $GLOBALS['var2'] = &$GLOBALS['var1'];  
}  
test1();  
echo $var2;  //1

$var3 = 1;  
$var4 = 2;  
function test2(){  
     global $var3,$var4;  
     $var4 = &$var3;  
}  
test2();  
echo $var4;   //2

なぜ $var2 は 1 を出力し、$var4 は 2 を出力するのでしょうか?実際には、$var3 の参照が $var4 の参照アドレスを指しているためです。 $var4 の実際の値は変更されていません。公式の説明は次のとおりです。 $GLOBALS['var'] は外部グローバル変数そのものであり、グローバル $var は外部 $var の同じ名前の参照またはポインタです。

この例はまだあまり明確ではないかもしれません。別の例を紹介しましょう:

$var1 = 1;  
function test1(){  
     unset($GLOBALS['var1']);  
}  
test1();  
var_dump($var1);   //NULL

$var2 = 1;  
function test2(){  
    global  $var2;  
     unset($var2);  
}  
test2();  
echo $var2;   //1

?$var1 の値は削除されますが、$var2 の値はまだ存在します。これは、$var2 が単なるエイリアス参照であり、その値がまったく変更されていないことを証明しています。つまり、グローバル $var は実際には $var = &$GLOBALS['var'] であり、これは外部変数を呼び出すための単なるエイリアスです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。