Variable variables are the special features of PHP in PHP. It supports storing the name of a variable into a variable. It is used to change the variable name dynamically.
Variable Variables are start with double dolor($$) sign. It can be used in tree like access, {variable variables name} -> {variable name} -> {variable value}. For example,
<?php
$language = "PHP";
$category = "language";
echo $category;
?>
The $$category is the variable variable in this example. PHP will execute this with the steps, $$category -> $ { $category } -> $language -> PHP.
We have an example to access class properties using PHP variable variables.
<?php
class College
{
var $name = "Arts and Science international";
var $category = "Arts";
}
$objCollege = new College();
$collegeName = "name";
echo $objCollege->$collegeName . "<br/>";
?>
We can use PHP variable variables in arrays. Sometimes we require to separate variable variables with curly braces to avoid confusion. We have examples to see what will happen if don’t use curly braces in PHP variable variables.
<?php
$movies = array(
"Django",
"Life of Pi"
);
$entertainment = "movies";
echo $entertainment[0];
?>
${$entertainment[0]} will return $m which is not found and cause an undefined variable error as,
Notice: Undefined variable: m in ..\variable_variables.php on line 4
To resolve this error, we need to change the code as,
<?php
$movies = array(
"Django",
"Life of Pi"
);
$entertainment = "movies";
echo $entertainment[0];
?>
This is an example to access a class property containing an array, using variable variables with curly braces,
<?php
class College
{
var $name = "Arts and Science international";
var $category = "Arts";
var $u = "Uncategorized";
var $ugCourses = array(
"B.A",
"B.Com",
"B.Sc"
);
}
$objCollege = new College();
$courses = "ugCourses";
// Output: Uncategorized
echo $objCollege->$courses[0] . "<br/>";
// Output: B.A
echo $objCollege->{$courses}[0] . "<br/>";
?>