Считается ли знак доллара в переменной переменной оператором разыменования? - PullRequest
6 голосов
/ 07 сентября 2011

Я показывал кому-то, как вы можете создавать переменные переменные в PHP (я бы рекомендовал использовать их НИКОГДА, это ужасная практика, и вы плохой человек, если вы используете переменные переменные переменные в реальном производственном коде), и они спросилиесли знак доллара действовал как оператор разыменования в этом случае.

На самом деле он не создает ссылку на другие переменные, поэтому я не вижу его как опцию разыменования.Документация для переменных вообще не содержит ссылок.

Кто прав?Я не думаю, что переменные переменные создают ссылки, и поэтому знак доллара не является оператором разыменования.

Вот пример кода для вашего удовольствия от просмотра (или боли, учитывая содержимое):

<?php

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

echo($$$b); //hello

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Считается ли знак доллара в переменной переменной оператором разыменования?

Нет.В PHP нет оператора разыменования.

Переменные переменные не следует рассматривать как разыменование , а, скорее, для доступа к дереву символов через строку.Например:

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

Вы можете выполнить это динамически, используя переменную вместо строкового литерала:

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

Синтаксис PHP позволяет удалять фигурные скобки, но это все еще вопросдоступ к таблице символов через строку.Нет ссылки / разыменования участвуют.

0 голосов
/ 29 октября 2014

Нет, это не DE-ссылка на что-либо .... если вообще что-то, это ссылка на ссылку на имя сохраненной переменной для ссылки на сохраненное значение имени хранимой переменной .... вид двойной ссылки или ссылкиссылки ..... de-ref будет означать, что одна переменная является частью подмножества другой.

...