ホームページ  >  記事  >  バックエンド開発  >  PHP のグローバル変数について

PHP のグローバル変数について

WBOY
WBOYオリジナル
2016-10-22 00:14:261208ブラウズ

皆さん、こんにちは。$_GLOBALS スーパーグローバル配列と、global で定義されたグローバル変数の違いをインターネットから読みました。違いは次のとおりです。

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

  2. global $var は、同じ名前を持つ外部 $var 変数への参照またはポインタであり、実際の代入ではありません

それで試してみました。コードは次のとおりです:

リーリー

Xiaobiさんの考え方によると、これはこうなります: unset($GLOBALS['var1']); になっているので変数自体が破棄されており、変数への参照も意味を持たないので結果を出力できません。

でも実行してみたら結果が1だったので初心者には理解できませんでした どなたか教えていただきたいです よろしくお願いします!

返信内容:

皆さん、こんにちは。$_GLOBALS スーパーグローバル配列と、global で定義されたグローバル変数の違いをインターネットから読みました。違いは次のとおりです。

    $GLOBALS['var'] は外部グローバル変数そのものです
  1. global $var は、同じ名前を持つ外部 $var 変数への参照またはポインタであり、実際の代入ではありません
  2. それで試してみました。コードは次のとおりです:
リーリー

Xiaobiさんの考え方によると、これはこうなります: unset($GLOBALS['var1']); になっているので変数自体が破棄されており、変数への参照も意味を持たないので結果を出力できません。

でも実行してみたら結果が1だったので初心者には理解できませんでした どなたか教えていただきたいです よろしくお願いします!

PHP では、内部の関数は常にプライベート変数です。グローバルは、同じ名前の外部変数への単純な参照やポインターではなく、関数の外部変数を指すエイリアス変数を関数内に生成します。

実際には、単純に変数のアドレスポインタの問題として理解できます。

    は同じポインタで、値 1 が格納されているメモリ アドレスを指します
  1. ポインタ $GLOBALS['var1'] 和外部的 $var1

  2. のコピー ポインタ。値 1 が格納されているメモリ アドレスも指します
  3. global $var1 是外部的 $val1

    関係なく
  4. 、指す値のメモリアドレスは同じなので、外部変数の値を変更するという目的は得られます。
  5. それで:

    $GLOBALS['var1']或者global $var1

    unset($GLOBALS['var1']) オペレーションは、global $ val1; の下の外部 <code>$var1
  6. test 関数も破棄します。 unset($val1) は外部の $var1 を破壊しません
以下のコードを見てください。より明確にわかります

リーリー リーリー unset($GLOBALS['var1']) 操作同时销毁了外部的 $var1
test 函数下进行 global $val1; unset($val1) 不会销毁外部的$var1 リーリー

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