2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php变量名动态生成 PHP中动态创建变量名(可变变量) | 学步园

php变量名动态生成 PHP中动态创建变量名(可变变量) | 学步园

时间:2023-07-22 04:54:58

相关推荐

php变量名动态生成 PHP中动态创建变量名(可变变量) | 学步园

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中动态创建变量名就介绍到这里了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。