30% Therapy – 40% Practice – 30% Work project

PHP – $GLOBALS



$GLOBALS is one of the “superglobal” or “automatic global” variables in PHP. It is available in all scopes throughout a script. There is no need to do “global $variable;” to access it within functions or methods.

$GLOBALS is an associative array of references to all globally defined variables. The names of variables form keys and their contents are the values of an associative array.

Example

This example shows $GLOBALS array containing the name and contents of global variables −

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

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

It will produce the following output

Hello
100
123

Example

In the following example, $var1 is defined in the global namespace as well as a local variable inside the function. The global variable is extracted from the $GLOBALS array.

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

It will produce the following output

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

Example

Prior to PHP version 8.1.0, global variables could be modified by a copy of $GLOBALS array.

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

It will produce the following output

int(1)

Here, $globals is a copy of the $GLOBALS superglobal. Changing an element in the copy, with its key as “a” to 2, actually changes the value of $a.

It will produce the following output

int(2)

Example

As of PHP 8.1.0, $GLOBALS is a read-only copy of the global symbol table. That is, global variables cannot be modified via their copy. The same operation as above won’t change $a to 2.

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

It will produce the following output

int(1)
Translate »