PHP - $GLOBALS



$GLOBALS 是 PHP 中的“超全局变量”或“自动全局变量”之一。它在整个脚本的所有作用域中都可用。在函数或方法中访问它不需要使用“global $variable;”。

$GLOBALS 是一个关联数组,包含对所有全局定义变量的引用。变量名构成键,其内容是关联数组的值。

示例

此示例显示 $GLOBALS 数组包含全局变量的名称和内容 -

<?php
   $var1="Hello";
   $var2=100;
   $var3=array(1,2,3);

   echo $GLOBALS["var1"] . "\n";
   echo $GLOBALS["var2"] . "\n";
   echo implode($GLOBALS["var3"]) . "\n";
?>

它将产生以下输出 -

Hello
100
123

示例

在以下示例中,$var1 在全局命名空间以及函数内部的局部变量中定义。全局变量是从 $GLOBALS 数组中提取的。

<?php
   function myfunction() {
      $var1="Hello PHP";
      echo "var1 in global namespace: " . $GLOBALS['var1']. "\n";
      echo "var1 as local variable: ". $var1;
   }
   $var1="Hello World";
   myfunction();
?>

它将产生以下输出 -

var1 in global namespace: Hello World
var1 as local variable: Hello PHP

示例

在 PHP 8.1.0 之前的版本中,全局变量可以通过 $GLOBALS 数组的副本进行修改。

<?php
   $a = 1;
   $globals = $GLOBALS; 
   $globals['a'] = 2;
   var_dump($a);
?>

它将产生以下输出 -

int(1)

这里,$globals 是 $GLOBALS 超全局变量的副本。将副本中键为“a”的元素更改为 2,实际上会更改$a的值。

它将产生以下输出 -

int(2)

示例

从 PHP 8.1.0 开始,$GLOBALS 是全局符号表的只读副本。也就是说,不能通过其副本修改全局变量。与上面相同的操作不会将$a更改为 2。

<?php
   $a = 1;
   $globals = $GLOBALS; 
   $globals['a'] = 2;
   var_dump($a);
?>

它将产生以下输出 -

int(1)
广告