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)
廣告

© . All rights reserved.