有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
<?php $a = "hello"; ?>
一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:
<?php $$a = "world"; ?>
这时,两个变量都被定义了:$a 的内容是“hello”并且 $hello 的内容是“world”。因此,可以表述为:
<?php echo "$a ${$a}"; ?>
以下写法更准确并且会输出同样的结果:
<?php echo "$a $hello"; ?>
它们都会输出:hello world。
要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
<?php $a = 'hello'; $$a = 'world'; echo "$a ${$a}";
以上代码的第二句,我们是用两个美元符号的变量,那么在这里这个变量是我们可变变量。从第一句开始详细解释:
我们第一句,定义了一个a变量,他的值是hello. 第二句我们是:(由于发现美元符号有特殊含义所以我就解释写在注释了。。。)
$$a = 'world'; //在这里我们的$$a就是可变变量;在这里$$a就表示$($a的值),那么这是什么意思呢?在这里我们的$a的值是不是hello?那么$$a就表示把$a替换成他的值,那么就是$hello。那么意思就是说$hello='world';不知道是否理解? //我们的$a是不是hello为值?那么$$a,其中的$a是不是hello,如果把$a替换成hello那不就是$hello那么就表示$hello的值等于了world,这样懂了吧。
echo "$a ${$a}";
必需要加花括号:{}如果不加则是会输出变量名,大家试一下就懂了,就会不正确,其实以上代码和以下这个代码是一样的:
<?php $a = 'hello'; $$a = 'world'; echo "$a $hello"; ?>
以上是php中可变变量 "$$" 使用详解的详细内容。更多信息请关注PHP中文网其他相关文章!