$$(一美元或两美元)在 PHP 中是什么意思?

例如,函数中的变量声明:

global $$link;

$$是什么意思?

62714 次浏览

变量的变量

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

$$variable这样的语法称为 变量

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

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

您将得到以下输出:

test

这里:

  • $real_variable包含 'test'
  • $name包含变量的名称: 'real_variable'
  • $$name的意思是“ 变量的名称包含在 $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

所以,我会说,是的,你可以做 $$$; -)

它将一个变量的内容作为另一个变量的名称计算。基本上,它给出了名称存储在 $link中的变量。

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

考虑一下这个例子

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

变量:

$$outer

将等于字符串“ foo”

它创建一个动态变量名。

$link = 'foo';
$$link = 'bar';    // -> $foo = 'bar'
echo $foo;
// prints 'bar'

(亦称 可变变量)

我不想重复后,其他人,但有一个使用 $$的风险:)

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

所以用它的头。 :)

这对我来说很管用(放在方括号里) :

$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;
}