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

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

WBOY
リリース: 2016-06-13 13:13:46
オリジナル
856 人が閲覧しました

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'] であり、これは外部変数を呼び出すための単なるエイリアスです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート