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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access