Что означает $$ (доллар доллар или двойной доллар) в PHP? - PullRequest
101 голосов
/ 26 апреля 2010

Пример - объявление переменной внутри функции:

global $$link;

Что означает $$?

Ответы [ 7 ]

159 голосов
/ 26 апреля 2010

Синтаксис, такой как $$variable, называется Переменная переменная .


Например, если вы считаете эту часть кода:

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

Вы получите следующий вывод:

test


Здесь:

  • $real_variable содержит тест
  • $name содержит имя вашей переменной: 'real_variable'
  • $$name означает « переменная, имя которой содержится в $name»
    • Что есть $real_variable
    • А имеет значение 'test'



РЕДАКТИРОВАТЬ после @ Jhonny's комментария:

Делаете $$$?
Ну, лучший способ узнать это попробовать; -)

Итак, давайте попробуем эту часть кода:

$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

Итак, я бы сказал, что да, вы можете сделать $$$; -)

22 голосов
/ 26 апреля 2010

Внутренний $ разрешает переменную в строку, а внешний разрешает переменную по этой строке.

Итак, рассмотрим этот пример

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

Переменная:

$$outer

будет равно строке "foo"

12 голосов
/ 26 апреля 2010

Это переменная .

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>
6 голосов
/ 26 апреля 2010

Создает динамическое имя переменной. Э.Г.

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

(также известный как переменная переменная )

3 голосов
/ 26 апреля 2010

Я не хочу повторяться после других, но есть риск, используя $$:)

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

Так что используйте его с головой. :)

1 голос
/ 26 апреля 2010

Оценивает содержимое одной переменной как имя другой. В основном это дает вам переменную, имя которой хранится в $link.

0 голосов
/ 03 мая 2019

это сработало для меня (заключите в квадратные скобки):

$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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...