PHP中的$$(美元或双美元)是什么意思?


Answers:


181

如语法$$variable被称为变量变量


例如,如果您考虑这部分代码:

$real_variable = 'test';
$name = 'real_variable';
echo $$name;

您将获得以下输出:

test


这里 :

  • $real_variable 包含测试
  • $name 包含变量的名称: 'real_variable'
  • $$name表示“ 变量thas的名称包含在$name ”中
    • 哪一个 $real_variable
    • 并具有价值 'test'



@Jhonny评论后编辑:

做一个$$$
好吧,最好的了解方法是尝试;-)

因此,让我们尝试这部分代码:

$real_variable = 'test';
$name = 'real_variable';
$name_of_name = 'name';

echo $name_of_name . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';

这是我得到的输出:

name
real_variable
test

所以,我想说的是,您可以做到$$$ ;-)


10
虽然我同意它会很有用,但在大多数情况下,无论如何还是最好使用数组。
o0'。

所以这和做$ {$ value}一样吗?
Chaim 2010年

3
@Chaim:是的;除了在某些情况下需要{}之外(手册中有一个示例)
Pascal MARTIN 2010年

23

内部$将变量解析为字符串,外部$通过该字符串解析变量。

所以,考虑这个例子

$inner = "foo";
$outer = "inner";

变量:

$$outer

将等于字符串“ foo”


即使公认的答案更广泛(包括测试用例)。这种解释对我来说更清楚
MariusJP

13

这是一个变量的变量

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>


4

我不想重复别人,但使用$$:) 有风险

$a  = '1';
$$a =  2; // $1 = 2 :)

因此,请与头部配合使用。:)


1

它将一个变量的内容评估为另一个变量的名称。基本上,它会为您提供名称存储在中的变量$link


1

这对我有用(用方括号括起来):

$aInputsAlias = [
        'convocatoria'   => 'even_id',
        'plan'           => 'acev_id',
        'gasto_elegible' => 'nivel1',
        'rubro'          => 'nivel2',
        'grupo'          => 'nivel3',
    ];

    /* Manejo de los filtros */

    foreach(array_keys($aInputsAlias) as $field)
    {
        $key = $aInputsAlias[$field];

        ${$aInputsAlias[$field]} = $this->request->query($field) ? $this->request->query($field) : NULL;
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.