この記事ではphpにおけるglobalと$GLOBALS[' ']の違いを中心に紹介しますので、興味のある方は参考にしていただければ幸いです。
PHP では global と $GLOBALS[' '] に違いはないと思っていましたが、今日調べてみたところ、両者には大きな違いがあることが分かりました。
global $var: ポイントグローバル変数 $var への参照;
$GLOBALS["var"]: グローバル変数 $var 自体であり、$var と同等です。
例 1:
<?php $var1 = 1; $var2 = 2; function test() { $GLOBALS['var2'] = &$GLOBALS['var1']; } test(); echo $var2;//输出1 ?>
$GLOBALS['var2'] = $GLOBALS['var1'] この関数は、$var2 を $var1 への参照に変更することです。つまり、 $var2 は $var1 のエイリアスであり、両方とも同じメモリ空間を指すため、$var2 の値は 1 になります。
<?php $var1 = 1; $var2 = 2; function test(){ global $var1, $var2; $var2 = &$var1; echo $var2; $var2 = 'hello...'; } test(); // 输出 1 echo $var2; // 输出 2 echo $var1; // 输出 hello... ?>
例 3.
<?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?>
補足:
変数を破棄するには、多くの場合、変数を破棄するだけですが、メモリ内の値は空になります。破壊されない(つまり、unset()関数のインデックスは変数とメモリの関係を切断し、変数名は破壊されず、メモリ内の値は破壊されず、メモリは解放されないことに注意してください)。 :1. この関数は、変数によって占有されているメモリが 256 バイトを超えた場合にのみ機能し、メモリは解放されます。
2. アドレスは、変数が指すメモリを指すすべての変数 (変数へのすべての参照など) が破棄された場合にのみ解放されます。
例 4.
<?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; //结果为打印1 ?>
<?php $var = 1; $var1 = &$var; unset($var1); echo $var; ?>
<?php $var1 = "我是变量var1的值"; $var2 = "我是变量var2的值"; function global_references($use_globals) { global $var1, $var2; if (!$use_globals) { $var2 = &$var1; echo $var1; echo $var2; echo "<br />"; } else { $GLOBALS["var2"] = &$var1; echo $var1; echo $var2; echo "<br />"; } } global_references(false); //1.打印:我是变量var1的值我是变量var1的值 echo $var1; echo $var2; echo "<br />"; //2.打印:我是变量var1的值我是变量var2的值 global_references(true); //3.打印:我是变量var1的值我是变量var2的值 echo $var1; echo $var2; echo "<br />"; //4.打印:我是变量var1的值我是变量var1的值 ?>
関連する推奨事項:
PHP が外部変数 $GLOBALS を読み取る
PHP json_encode($GLOBALS) エラーの理由
以上がPHPのグローバルと$GLOBALS[の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。