What is PHP get_defined_vars() Function?
If you want to get all the defined variables in your script be them environment variables, server variables and user-defined variables within a scope, call get_defined_vars() function You’ll get all the variables that are available in a scope from where the get_defined_vars() function is called. (Check example 1).
Syntax:
get_defined_vars()
Parameters:
The function has no parameter.
Syntax to retrieve a specific variable:
get_defined_vars()[variable_name]
Parameters:
variable_name – It returns all the variable detail of the “variable_name” variable. Check example 5.
Return Values:
The function returns all the defined variables within the scope that get_defined_vars() is called as the form of a multi-dimensional array.
Examples:
Example 1:
<pre>
<?php
$topic = "Web development";
$version = 1.0;
$freeLearning = TRUE;
print_r(get_defined_vars());
?>
</pre>
Output:
Array
(
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[topic] => Web development
[version] => 1
[freeLearning] => 1
)
Example 2:
<pre>
<?php
$topic = "Web development";
$version = 1.0;
print_r(get_defined_vars());
$freeLearning = TRUE;
?>
</pre>
Output:
Array
(
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[topic] => Web development
[version] => 1
)
Explanation:
As the variable $freeLearning is declared after the get_defined_vars() function, it doesn’t returns $freeLearning variable.
Example 3:
<pre>
<?php
$firstNumber = 10;
function setNumbers(){
$secondNumber = 20;
$thirdNumber = 30;
}
$topic = "Web development";
$freeLearning = TRUE;
setNumbers();
print_r(get_defined_vars());
?>
</pre>
Output:
Array
(
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[firstNumber] => 10
[topic] => Web development
[freeLearning] => 1
)
Explanation:
As the function get_defined_vars() is called in global scope, it only returns variables that are declared in global scope, not the two variables ($secondNumber & $thirdNumber) that are declared in local scope.
Example 4:
<pre>
<?php
$firstNumber = 10;
function setNumbers1(){
$secondNumber = 20;
$thirdNumber = 30;
print_r(get_defined_vars());
}
$topic = "Web development";
$freeLearning = TRUE;
setNumbers1();
?>
</pre>
Output:
Array
(
[secondNumber] => 20
[thirdNumber] => 30
)
Explanation:
As the function get_defined_vars() is called in local scope, it only returns variables that are declared in global scope, not the two variables ($topic & $freeLearning) that are declared in local scope.
Example 5:
<pre>
<?php
$topic = "Web development";
$version = 1.0;
$freeLearning = TRUE;
print_r(get_defined_vars()["topic"]);
?>
</pre>
Output:
Web development
Example 6:
<pre>
<?php
$firstNumber = 10;
function setNumbers2(){
$secondNumber = 20;
$thirdNumber = 30;
unset($thirdNumber);
print_r(get_defined_vars());
}
$topic = "Web development";
$freeLearning = TRUE;
setNumbers2();
?>
</pre>
Output:
Array
(
[secondNumber] => 20
)
Explanation:
Though two variables ($secondNumber and $thirdNumber) are in local scope of the setNumbers2() function, the $thirdNumber is destroyed by the unset() function. So, the get_defined_vars() returns only $secondNumber variable.
Example 7:
<pre>
<?php
$firstNumber = 10;
function setNumbers3(){
global $firstNumber;
$secondNumber = 20;
$thirdNumber = 30;
print_r(get_defined_vars());
}
$topic = "Web development";
$freeLearning = TRUE;
setNumbers3();
?>
</pre>
Output:
Array
(
[firstNumber] => 10
[secondNumber] => 20
[thirdNumber] => 30
)
Explanation:
As the variable $firstNumber declared in the global scope is accessed in the local scope inside the setNumbers3() function, the get_defined_vars() function return this variable.
Practical Usages of get_defined_vars() Function:
For debugging purpose, you may use get_defined_vars() function to get the full list of all the defined variables.
Notes on get_defined_vars() function:
- The function returns variables that has already been declared. It will not return any variable declared later after this function even those are in same scope. Check example 2.
- Unset variables are not returned by this function. Check example 6.
- The function can return variables of another scope if you access that variable. Check example 7.
PHP Version Support:
PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8
Summary: PHP get_defined_vars() Function
When you want to list functions in your script for any reason like debugging use get_defined_vars() function. It is one of the built-in variable handling functions in PHP.