ホームページ  >  記事  >  php教程  >  php $GLOBALS スーパーグローバル変数分析

php $GLOBALS スーパーグローバル変数分析

WBOY
WBOYオリジナル
2016-06-21 08:48:001143ブラウズ

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

興味のある記事

  • smarty テンプレートでの php 関数の使用と、smarty テンプレートの 1 つの変数で複数の関数を使用する方法
  • 変数を決定するために PHP で一般的に使用される関数
  • PHP は Curl 関数を使用して、マルチスレッド Web クローリングとファイルのダウンロードを実現します
  • Thinkphp テンプレートで一般的に使用されるシステム変数の概要
  • php in 静的キーワードを前に追加した後の変数と関数の違い
  • PHP の組み込み変数 DIRECTORY_SEPARATOR 分析
  • PHP は URL ショートカットをデスクトップに保存します
  • PHP チェックSQL インジェクション関数
にならないようにするためのブラウザー パラメーター



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