まず、コードを見てみましょう
<?php $a = 1 ; /* global scope */ function Test () { echo $a ; /* reference to local scope variable */ } Test (); ?>
このスクリプトには出力はありません。これは、echo ステートメントが変数 $a のローカル バージョンを参照しており、このスコープでは値が割り当てられていないためです。 PHP のグローバル変数は C 言語とは少し異なることに気づくかもしれません。C 言語では、ローカル変数によってオーバーライドされない限り、グローバル変数は関数内で自動的に有効になります。これにより問題が発生する可能性があり、誰かが誤ってグローバル変数を変更してしまう可能性があります。 PHP のグローバル変数を関数で使用する場合は、グローバル変数を宣言する必要があります。
グローバルキーワード
まず、グローバルの使用例です。コードは次のとおりです。
<?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 ; ?>
$GLOBALS は連想配列で、各変数は要素であり、キー名は 変数に対応しますname、値は変数の内容に対応します。 $GLOBALS がグローバル スコープに存在する理由は、$GLOBALS が スーパーグローバル変数 であるためです。次の例は、スーパーグローバル変数の有用性を示しています:
例 #3 スーパーグローバル変数とスコープを示す例
<?php function test_global () { // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。 global $HTTP_POST_VARS ; echo $HTTP_POST_VARS [ 'name' ]; // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。 echo $_POST [ 'name' ]; } ?>
以上がPHPでのglobalキーワードと$GLOBALSの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。