何时在变量周围包裹花括号

时间:2016-02-24 09:30:01

标签: php

我不知道如何解释这一点,但简单来说,我看到人们在输出值时使用{$variable}。我注意到{$variable}并不能解决所有问题。我们应该何时使用{$variable}

3 个答案:

答案 0 :(得分:50)

什么是PHP花括号:

您知道可以通过四种不同的方式指定字符串。其中两种方法是 - 双引号("")和heredoc语法。您可以在这两种类型的字符串中定义变量,PHP解释器也会在字符串中解析或解释该变量。

现在,有两种方法可以在字符串中定义变量 - 简单语法是在字符串中定义变量的最常用方法,复杂语法使用花括号来定义变量。

大括号语法:

使用带花括号的变量非常简单。只需使用{和}来包装变量,如:

try { Solution2 solution = (Solution2)_envDte.Solution; var path = Path.Combine(solutionFoler, "Setup"); // Get the project template var projectTemplateFileFullName = solution.GetProjectTemplate(projectTemplateName, language); var proj = solution.AddFromTemplate(projectTemplateFileFullName, path, projectName, false); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.ToString()); }

注意:{和$之间一定不能有任何差距。否则,PHP解释器不会将$后面的字符串视为变量。

Curly braces示例:

{$variable_name}

输出:

<?php
$lang = "PHP";
echo "You are learning to use curly braces in {$lang}.";
?>

何时使用花括号:

当您在字符串中定义变量时,如果使用简单的语法来定义变量,PHP可能会将变量与其他字符混淆,这会产生错误。请参阅以下示例:

You are learning to use curly braces in PHP.

输出:

<?php
$var = "way";
echo "Two $vars to defining variable in a string.";
?>

在上面的例子中,PHP的解释器认为$ vars是一个变量,但是,变量是$ var。要将变量名和字符串中的其他字符分开,可以使用花括号。现在,请使用花括号 -

查看上面的示例
Notice: Undefined variable: vars …

输出:

<?php
$var = "way";
echo "Two {$var}s to define a variable in a string.";
?>

来源:http://schoolsofweb.com/php-curly-braces-how-and-when-to-use-it/

答案 1 :(得分:11)

迟了几年但我可以补充一下。

您甚至可以在花括号中使用变量来动态地从类中访问对象的方法。

例如

$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上测试

答案 2 :(得分:0)

据我所知,您可以使用变量$x

echo "this is my variable value : $x dollars";

…,但是如果变量和其周围的文本之间没有空格,则应使用{}。例如:

echo "this is my variable:{$x}dollars";

因为如果您将其编写为$xdollars,它将被解释为另一个变量。