有时候可变的变量名会给编程带来很大的方便也就是说变量名可以被动态的命名和使用通常变量通过下面这样的语句来命名
- <?php
- $a=hello;
- ?>
可变变量名指的是使用一个变量的值作为这个变量的名称在上面的例子中通过使用两个$符号你可以把hello设置成一个变量的名称就像下面那样
- <?php
- $$a=world;
- ?>
通过上面的两个语句有两个变量被定义变量$a装的内容是”hello” 以及变量$hello装的内容是 “world” 于是下面的语言
- <?php
- echo"$a${$a}";
- ?>
跟下面的语句的输出完全一致
- <?php
- echo"$a$hello";
- ?>
它们都输出hello world
为 了使用数组的可变变量名你需要解决一个歧义问题就是如果你写$$a[]解析器需要明白究竟你的意思是要把$a[]当成一个变量还是要 把$$a当成变量[]指的是这个变量的索引解决这个歧义问题的语法是第一种情况使用${$a[]}第二种情况使用${$a}[]
类 属性也可以通过可变属性名来访问可变属性名从产生调用所在的变量的访问范围内获取例如如果你的表达式是这样的$foo>$bar那么运 行时将会在本地变量范围内寻找变量$bar它的值将会做为$foo对象的一个属性名如果$bar是个数组也可以使用
例 可变变量名
- <?php
- classfoo{
- var$bar=Iambar;
- }
- $foo=newfoo();
- $bar=bar;
- $baz=array(foobarbazquux);
- echo$foo>$bar"n";
- echo$foo>$baz[]"n";
- ?>
上面的例子将会输出下面的结果
I am bar
I am bar
警告
请注意可变变量名不能用于PHP函数和类里的超级全局数组变量上变量$this也是一个不能动态取名的特殊变量