什么时候用大括号括住变量

新手上路,请多包涵

我不知道如何解释这一点,但简单来说,我看到人们在输出值时使用 {$variable} 。我注意到 {$variable} 并不是一切都有效。我们什么时候应该使用 {$variable}

原文由 Red Virus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 696
2 个回答

什么是 PHP 大括号:

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

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

大括号语法:

使用带花括号的变量非常容易。只需用 { 和 } 包装变量,例如:

{$variable_name}

注意:{ 和 \( 之间不能有任何间隙。否则,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/

原文由 Fakhruddin Ujjainwala 发布,翻译遵循 CC BY-SA 3.0 许可协议

晚了几年,但我可以补充一下:

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

例子:

 $username_method = 'username';
$realname_method = 'realname';

$username = $user->{$username_method}; // $user->username;
$name = $user->{$realname_method}; // $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 上测试

原文由 Sanjok Gurung 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏