ホームページ  >  記事  >  バックエンド開発  >  PHP における global と $GLOBALS[] の使用法と違い

PHP における global と $GLOBALS[] の使用法と違い

WBOY
WBOYオリジナル
2016-06-13 12:08:48886ブラウズ

PHP における global と $GLOBALS[] の使用法と違い

変数のスコープは、変数が定義されているコンテキスト (つまり、有効スコープ) です。ほとんどの PHP 変数にはスコープが 1 つだけあります。この単一スコープ スパンには、include および require によって導入されたファイルも含まれます。例:

?

<?php$a = 1;include 'b.inc';?>

?

?

ここで、変数 $a はインクルード ファイル b.inc で有効になります。ただし、ユーザー定義関数では、ローカル関数スコープが導入されます。関数内で使用される変数は、デフォルトではローカル関数のスコープに制限されます。例:

?

<?php$a = 1; /* global scope */function Test(){    echo $a; /* reference to local scope variable */}Test();?>

?

?

echo ステートメントはローカル バージョンの変数 $a であり、このスコープ内では値が割り当てられません。 PHP のグローバル変数は C とは少し異なることに気づくかもしれません。C では、ローカル変数によってオーバーライドされない限り、グローバル変数は関数内で自動的に有効になります。これにより問題が発生する可能性があり、誰かが誤ってグローバル変数を変更してしまう可能性があります。 PHP のグローバル変数を関数で使用する場合は、グローバル変数を宣言する必要があります。

?

グローバル キーワード

?

まず、グローバルの使用例:

Example # 1 global

?

<?php$a = 1;$b = 2;function Sum(){    global $a, $b;    $b = $a + $b;}Sum();echo $b;?>

?

?

を使用します。上記のスクリプトの出力は「3」になります。グローバル変数 $a と $b が関数内で宣言されると、いずれかの変数へのすべての参照は、そのグローバル バージョンを指すようになります。 PHP では、関数が宣言できるグローバル変数の最大数に制限はありません。

グローバル スコープ内の変数にアクセスする 2 番目の方法は、特別な PHP カスタム $GLOBALS 配列を使用することです。前の例は次のように記述できます:

例 2 グローバルの代わりに $GLOBALS を使用します

?

<?php$a = 1;$b = 2;function Sum(){    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];}Sum();echo $b;//3?>

?

?

$GLOBALS は連想配列であり、各変数は要素であり、キー名は変数名に対応し、値は変数の内容に対応します。 $GLOBALS はスーパーグローバル変数であるため、$GLOBALS はグローバル スコープ内に存在します。次の例は、スーパーグローバル変数の有用性を示しています。

例 #3 スーパーグローバル変数とスコープを示す例

?

<?phpfunction test_global(){    // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。    global $HTTP_POST_VARS;    echo $HTTP_POST_VARS['name'];    // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。    echo $_POST['name'];}?>

?

?

?グローバルと $GLOBALS[] の違い

?

$GLOBALS['var'] は外部グローバル変数 そのものです、グローバル $var は、外部 $var

?

<?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?>

? と同じ名前の 参照またはポインターです。結果: 注意: 未定義の変数: var1 。変数 var1 が unset 関数によって削除されたためです。

?

 <?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; ?> 

? 結果: print 1 値はまったく変更されていません。

global $var は実際には

&$GLOBALS['var'] であり、これは外部変数を呼び出すための単なるエイリアスです。上記のコードの ?

$var1 と $GLOBALS['var1'] は、同じ変数自体を参照しています。

?

PHP のグローバル変数の機能はグローバル変数を定義することですが、このグローバル変数は Web サイト全体に適用されるのではなく、include または require 内のすべてのファイルを含む現在のページに適用されます。 。 ?

?

結論:

1.$GLOBALS['var'] は外部グローバル変数そのものですか?

2.global $var は、外部 $var への同じ名前 の参照またはポインターです。

?

?

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