PHP Tutorial Tutorials - Variable Scope

Variable Scope

The scope of a variable is the context within which it is defined.

PHP variables can be one of three scope types.

Local variables

A variable declared in a function is considered local.
Any variable used inside a function is by default limited to the local function scope.

<?php
$a = 1; /* global scope */ 

function test()
{ 
    $a = 3;
    /* reference to local scope variable */ 
    echo "\$a inside of function is $a. <br />";
} 

test();
echo "\$a outside of function is $a. <br />";
?> 

Output

$a inside function is 1. 
$a outside of function is 3. 

Global variables

In PHP global variables must be declared global inside a function if they are going to be used in that function.

<?php
$a = 1; /* global scope */ 

function test()
{ 
    global $a; /* reference to global scope variable */ 
    
    echo "\$a inside of function is $a. <br />";
} 

test();
echo "\$a outside of function is $a. <br />";
?> 

Output:

$a inside function is 1. 
$a outside of function is 1. 

Using $GLOBALS instead of global

$GLOBALS is a superglobal which is a built-in variables that are always available in all scopes.

<?php
$a = 1; /* global scope */ 

function test()
{ 
    $GLOBALS['a'] = 3; /* reference to global scope variable */ 
    
    // variable $a is undefined.
    // echo "\$a inside of function is $a. <br />";
} 

test();
echo "\$a outside of function is $a. <br />";
?> 

Output

$a outside of function is 3. 

Static variables

A static variable exists only in a local function scope, but it does not lose its value when program execution leaves this scope.

To declare a variable to be static, add the keyword STATIC in front of the variable name.

<?php
   function test() {
      STATIC $count = 0;
      echo $count;
      echo "<br />";

      $count++;
   }
   
   test();
   test();
   test();
?>
  • $count is initialized only in first call of function
  • Every time the test() function is called it will print the value of $count and increment it.

Output:

0
1
2

Included files Occasion

For the most part all PHP variables only have a single scope. This single scope spans included and required files as well

<?php
    $a = 1;
    include 'inc.php';
?>
// inc.php
<?php
   echo '$a='.$a;
?>

The $a variable will be available within the included inc.php script.
Output:

$a=1
Date:2019-09-30 18:12:58 From:www.Lautturi.com author:Lautturi