PHP中,我们可以动态地创建一个变量名。例如,你想要使用与数据库查询得到的字段名称一致的变量名。
使用PHP中“可变变量”的语法,即在一个其值为你想作为变量名称的变量前面加一个$:
$animal = 'turtles';
$turtles = 103;
print $$animal;
在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名称。例如:
$animal = 'turtles';
$turtles = 103;
print $$animal;
这段代码会输出103。因为$animal = ’turtles',$$animal 就是$turtles,而$animal 等于103。
如果使用大括号,还能够构造出用于表示变量名的更复杂的表达式:
$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会求得位于大括号之间的表达式的值,并将这个值作为一个变量名。大括号中的表达式甚至还可以调用函数,比如上面代码中的strtolower()。
在迭代类似的变量名称时,可变变量也很有用。假如你想要查询一个数据库表,其字段名分别是title_1, title_2等。如果你想要检查一个标题($title)是否与其中一个字段的值匹配,那么最简单的方式就是像下面这样进行循环遍历:
for ($i = 1; $i <= $n; $i++) {
$t = "title_$i";
if ($title == $$t) { /* match */ }
}
当然,如果把这些值保存到一个数组中可能会更直观,不过,要是你在维护一段使用了这种技术的老代码(即不能修改),可变变量就很有用了。
大括号语法在理清有关数组元素的歧义时是必要的。可变变量$$donkeys[12]可能有两种含义。第一种含义是“拿$donkeys数组中第12元素的值作为一个变量名”,要想明确表示这种含义,应该写成:${$donkeys[12]}。第二种含义是“用标量$donkeys的值作为一个数组名称,并找到该数组中的第12元素”,若想明确表示这种含义,应该写成:${$donkeys}[12]。
可变变量语法并不局限于两个美元符号,可以使用三个甚至更多个。然而,在实践中很少出现有必要使用超过两个间隔层次的情况。
PHP中动态创建变量名就介绍到这里了。
如果觉得《php变量名动态生成 PHP中动态创建变量名(可变变量) | 学步园》对你有帮助,请点赞、收藏,并留下你的观点哦!