PHP Variable Scope
PHP Variable Scope
PHP variables can be declared anywhere in the PHP code.
The scope of a variable is the part of the script where the variable can be referenced/used.
PHP has three different variable scopes:
- global
- local
- static
Global Scope
A variable declared outside a function has a GLOBAL SCOPE and can only be accessed outside a function:
Example
Variable with global scope:
$x = 5; // global scope
function myTest() {
// using x inside this function will not work
echo "Variable x inside function is: $x";
}
myTest();
echo "Variable x outside function is: $x";
Try it Yourself »
Local Scope
A variable declared within a function has a LOCAL SCOPE and can only be accessed within that function.
Local variables are created when the function is called and are destroyed when the function finishes executing:
Example
Variable with local scope:
function myTest() {
$x = 5; // local scope
echo "Variable x inside function is: $x";
}
myTest();
// using x outside the function will not work
echo "Variable x outside function is: $x";
Try it Yourself »
Static Scope
Normally, when a function finishes executing, all of its variables are deleted.
However, sometimes we want a local variable NOT to be deleted. We need it for a
further job. To achieve this, use the static
keyword when you first declare the variable.
Then, each time the function is called, that variable will have the value from the last time the function was called.
Note: The variable is still local to the function.
Example
function myTest() {
static $x = 0; // static scope
echo $x;
$x++;
}
myTest();
myTest();
myTest();
Try it Yourself »
PHP global Keyword
The global keyword is used to access a global variable from within a function.
To do this, use the global keyword before the variables (inside the
function):
Example
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
Try it Yourself »
PHP $GLOBALS Superglobal
PHP also stores all global variables in an array called
$GLOBALS[index].
The index holds the name of the
variable. This array is also accessible from within functions and can be used to
update global variables directly.
The example above can be rewritten like this:
Example
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
Try it Yourself »