5.4. Creating a Dynamic Variable Name
Problem
You want to construct a variable’s name dynamically. For example, you want to use variable names that match the field names from a database query.
Solution
Use PHP’s variable variable syntax by prepending a
$ to a variable whose value is the variable name
you want:
$animal = 'turtles';
$turtles = 103;
print $$animal;
103Discussion
The previous example prints 103. Because
$animal
=
'turtles',
$$animal is
$turtles, which equals 103.
Using curly braces, you can construct more complicated expressions that indicate variable names:
$stooges = array('Moe','Larry','Curly');
$stooge_moe = 'Moses Horwitz';
$stooge_larry = 'Louis Feinberg';
$stooge_curly = 'Jerome Horwitz';
foreach ($stooges as $s) {
print "$s's real name was ${'stooge_'.strtolower($s)}.\n";
}
Moe's real name was Moses Horwitz.
Larry's real name was Louis Feinberg.
Curly's real name was Jerome Horwitz.PHP evaluates the expression between the curly braces and uses it as
a variable name. That expression can even have function calls in it,
such as strtolower( ).
Variable
variables are also useful when iterating through similarly named
variables. Say you are querying a database table that has fields
named title_1, title_2, etc. If
you want to check if a title matches any of those values, the easiest
way is to loop through them like this:
for ($i = 1; $i <= $n; $i++) {
$t = "title_$i";
if ($title == $$t) { /* match */ }
}Of course, it would be more straightforward to store these values ...