Я читал книгу PHP5, и автор широко используется этот синтаксис
${"{$something}_somethingelse"};
Я понятия не имею, что это значит. Динамически генерирует имя переменной?
Кто-то мне помогает?
Я читал книгу PHP5, и автор широко используется этот синтаксис
${"{$something}_somethingelse"};
Я понятия не имею, что это значит. Динамически генерирует имя переменной?
Кто-то мне помогает?
Это свойство языка называется Variable variables.
Рассмотрим следующий фрагмент кода:
$a = 'hello';
Это довольно прямо вперед. Он создает переменную $a
и устанавливает ее значение 'hello'
.
Давайте двигаться дальше:
$$a = 'world';
${$a} = 'world';
В принципе, так как $a = 'hello'
, те два утверждение являются эквивалентом делать:
$hello = 'world';
Так следующее:
echo "$a ${$a}";
ли эквивалент:
echo "$a $hello";
{ }
Скобки используются для предотвращения проблемы неоднозначности возникновения.Рассмотрим следующий пример:
$$a[1] = 'hello world';
Вы хотите назначить переменную после значения $a[1]
или вы хотите, чтобы присвоить индекс 1
переменной имени $a
?
Для первого выбора, можно было бы написать ее как таковую:
${$a[1]} = 'hello world';
Для второго выбора:
${$a}[1] = 'hello world';
Теперь, для примера.
Будем считать, что:
$something = 'hello';
Используя ваш пример, как, например:
${"{$something}_somethingelse"} = 'php rocks';
бы быть по существу эквивалентно делать:
$hello_somethingelse = 'php rocks';
Мне нужен еще один принятый ответ! Будь ты проклят! –
Помните, что переменные переменные обычно представляют собой плохую идею, так как обычно задача массивов (или объектов) заключается в выполнении задания. –
Это заменит {$something}
значением $ something.
Я думаю, что внутренние фигурные скобки только для удобства чтения и помочь при выполнении $object->property
и т.д.
Потому что, кажется, и в переменной, которая называется переменной величиной.
Например,
$foo = 'bar';
$$foo = 7;
echo $bar;
// produces 7;
Кронштейны позволяют делать более сложные имена переменных. Это ваш случай, если $ something был равен тесту:
${"test_somethingelse"};
Это просто расширенное имя переменной.
Вот пример.
$test = "test"; ${"test_test"} = "test2"; echo $test; // prints test echo ${"test_test"}; // prints test2
Использование Variable Varaibles, как и все упомянутые выше, позволяет создавать переменные на основе других переменных. Так что в вашем случае, он делает переменную, основанную на значении $ что-то
$something = "test"; ${"{$something}_somethingelse"}; turns into ${"test_somethingelse"};
Они являются 'переменные переменные'. См. this.
Ответ на правильный ответ правильный; Тем не менее, я скажу, что как разработчик PHP в течение длительного времени я редко их использую, и большую часть времени я считаю их запахом кода. –
Я вам поможем - купите другую книгу. Определенно запах кода, чтобы использовать эти «общие» – Draemon