Variable Scope

The scope of the variable is the area within which the variable has been created. Based on this, a variable can either have a local scope, a global scope, or a static scope in PHP.

Global Variable:

A variable that was created in the main body of the code and that can be accessed anywhere in the program is called a Global Variable. Global variables can be directly accessed or used in or outside of a function with the global keyword before the variable. However, we can also call them without the global keyword.

For Example:

<?php  
   $name = "Hello world";        // Global Variable  
   function global_var()  
   {  
       global $name;  
       echo "Variable inside the function: " . $name;  
       echo "</br>";  
   }  
   global_var();  
   echo "Variable outside the function: " . $name;  
?>  


Output:

Variable inside the function: Hello world
Variable outside the function: Hello world

Local Variable:

A local variable is created within a function and can only be used inside the function. This means that these variables cannot be accessed outside the function, as they have local scope.

For Example:

<?php  
   function mytest() 
   {  
       $capital = "Delhi";  
       echo "Capital of India is: " . $capital;  
   }  
   mytest(); // Calling the function
   // Using $capital outside the function will generate an error  
   echo $capital;  
?>  

Output:

Capital of India is: Delhi

Static Variable:

PHP has a feature that deletes the variable once it has finished execution and frees the memory. When we need a local variable that can store its value even after the execution, we use the static keyword before it, and the variable is called a static variable.

These variables only exist in a local function and do not get deleted after the execution has been completed.

For Example:

<?php  
   function static_var()  
   {  
       static $num1 = 3;    // Static variable  
       $num2 = 6;           // Non-static variable  
       // Increment in non-static variable which will increment its value to 7
       $num1++;  
       // Increment in static variable which will increment its value to 4 after first execution and 5 after second execution
       $num2++;  
       echo "Static: " . $num1 . "</br>";  
       echo "Non-static: " . $num2 . "</br>";  
   }  

   // First function call  
   static_var();  

   // Second function call  
   static_var();  
?>  

Output:

Static: 4

Non-static: 7

Static: 5

Non-static: 7