Я не знаю, как это объяснить, но простыми словами я видел людей, использующих {$variable}
при выводе значений. Я заметил, что {$variable}
не работает. Когда мы должны использовать {$variable}
?
Когда нужно обернуть фигурные скобки вокруг переменной
Ответ 1
Что такое фигурные скобки PHP:
Вы знаете, что строка может быть указана четырьмя различными способами. Два из этих способов - двойная кавычка ("") и синтаксис heredoc. Вы можете определить переменную в этих двух типах строк, а интерпретатор PHP также будет анализировать или интерпретировать эту переменную внутри строк.
Теперь существует два способа определить переменную в строковом синтаксисе, который является наиболее используемым методом определения переменных внутри строки и сложного синтаксиса, который использует фигурные скобки для определения переменных.
Синтаксис Curly braces:
Использовать переменную с фигурными фигурными скобками очень просто. Просто оберните переменную с помощью {и}, как:
{$variable_name}
Примечание. Между {и $. Else, интерпретатор PHP не будет рассматривать строку после $как переменную.
Пример фигурных фигурных скобок:
<?php
$lang = "PHP";
echo "You are learning to use curly braces in {$lang}.";
?>
Вывод:
You are learning to use curly braces in PHP.
Когда использовать фигурные скобки:
Когда вы определяете переменную внутри строки, PHP может смешивать переменную с другими символами, если использовать простой синтаксис для определения переменной, и это приведет к ошибке. См. Пример ниже:
<?php
$var = "way";
echo "Two $vars to defining variable in a string.";
?>
Вывод:
Notice: Undefined variable: vars …
В приведенном выше примере интерпретатор PHP считает $vars переменной, но переменная $var. Чтобы отделить имя переменной и другие символы внутри строки, вы можете использовать фигурные скобки. Теперь см. Пример выше, используя фигурные скобки -
<?php
$var = "way";
echo "Two {$var}s to define a variable in a string.";
?>
Вывод:
Two ways to define a variable in a string.
Источник: http://schoolsofweb.com/php-curly-braces-how-and-when-to-use-it/
Ответ 2
Несколько лет спустя, но могу ли я добавить.
Вы даже можете использовать переменную в фигурных скобках для динамического доступа к методам объекта из класса.
Например,
$usernamemethod = 'username';
$realnamemethod = 'realname';
$username = $user->{$usernamemethod}; // $user->username;
$name = $user->{$realnamemethod}; // $user->realname
Не хороший пример, но для демонстрации функциональности.
Еще один пример по запросу @kapreski в комментариях.
/**Lets say you need to get some details about the user and store in an
array for whatever reason.
Make an array of what properties you need to insert.
The following would make sense if the properties was massive. Assume it is
**/
$user = $this->getUser(); //Fetching User object
$userProp = array('uid','username','realname','address','email','age');
$userDetails = array();
foreach($userProp as $key => $property) {
$userDetails[] = $user->{$property};
}
print_r($userDetails);
После завершения цикла вы увидите записи, извлеченные из пользовательского объекта в вашем массиве $userDetails
.
Проверено на php 5.6
Ответ 3
Насколько я знаю, вы можете использовать для переменной $x
echo "this is my variable value : $x dollars";
… Но если между переменной и текстом вокруг нее нет пробелов, вы должны использовать {}
. Например:
echo "this is my variable:{$x}dollars";
потому что если вы написали $xdollars
он будет интерпретирован как другая переменная.