变量变量中的美元符号是否被视为取消引用运算符?

时间:2011-09-06 21:14:19

标签: php variable-variables

我向某人展示了如何在PHP中创建变量变量变量(我只建议永远使用它们,这是一种可怕的做法,如果你在实际的生产代码中使用变量变量,你就是个坏人),他们问道如果在这种情况下美元符号作为解除引用运算符。

它实际上并没有创建对其他变量的引用,所以我并不认为它是deref op。 documentation for variable variables甚至根本没有提到参考文献。

谁是对的?我认为变量变量不会创建引用,因此美元符号不是取消引用运算符。

以下是一些示例代码,供您观看乐趣(或给出内容的痛苦):

<?php

$a = 'c';
$b = 'a';
$c = 'hello';

echo($$$b); //hello

2 个答案:

答案 0 :(得分:4)

  

变量变量中的美元符号是否被视为取消引用   操作

没有。 PHP没有解引用运算符。

变量变量不应被视为解除引用,而是通过字符串访问符号树。例如:

$bar = 1;
echo ${'bar'};

您可以使用变量而不是字符串文字来动态执行此操作:

$bar = 1;
$foo = 'bar';
echo ${$foo};

PHP语法允许您删除大括号,但仍然是通过字符串访问符号表的问题。不涉及引用/解除引用。

答案 1 :(得分:0)

不,它不是DE引用任何东西....如果有的话,它引用存储的变量名称的引用来引用存储的变量名称的存储值....类型的a引用的双引用或引用..... de-ref意味着一个变量是另一个变量的子集的一部分。