When to wrap curly braces around a variable
我不知道如何解释这个问题,但简单地说,我看到人们在输出值时使用
什么是php大括号:
您知道字符串可以用四种不同的方式指定。其中两种方法是双引号(")和Heredoc语法。您可以在这两种类型的字符串中定义一个变量,PHP解释器也将在字符串中解析或解释该变量。
现在,有两种方法可以在字符串中定义变量:简单语法(这是在字符串中定义变量的最常用方法)和复杂语法(使用大括号定义变量)。
大括号语法:
使用带大括号的变量非常简单。只需用和像这样包装变量:
注:在和$之间不得有任何间隙。否则,PHP解释器不会将$后面的字符串视为变量。
大括号示例:
1 2 3 4 | <?php $lang ="PHP"; echo"You are learning to use curly braces in {$lang}."; ?> |
输出:
1 | You are learning to use curly braces in PHP. |
号
何时使用大括号:
在字符串中定义变量时,如果使用简单语法定义变量,PHP可能会将变量与其他字符混淆,这将产生错误。见下例:
1 2 3 4 | <?php $var ="way"; echo"Two $vars to defining variable in a string."; ?> |
输出:
1 | Notice: Undefined variable: vars … |
。
在上面的示例中,PHP的解释器将$var s视为变量,但是变量是$var。要将变量名和字符串中的其他字符分开,可以使用大括号。现在,请参见上面使用大括号的示例-
1 2 3 4 | <?php $var ="way"; echo"Two {$var}s to define a variable in a string."; ?> |
输出:
1 | Two ways to define a variable in a string. |
。
资料来源:http://schoolsofweb.com/php-curly-braces-how-and-when-to-use-it/
晚了几年,但我可以补充一下。
甚至可以使用大括号中的变量从类中动态访问对象的方法。
例如:
1 2 3 4 5 | $usernamemethod = 'username'; $realnamemethod = 'realname'; $username = $user->{$usernamemethod}; // $user->username; $name = $user->{$realnamemethod}; // $user->realname |
。
不是一个很好的例子,而是演示功能。
另一个例子如@kapreski在评论中的要求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /**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); |
循环完成后,您将看到从
在php 5.6上测试
据我所知,您可以使用变量
1 | echo"this is my variable value : $x dollars"; |
。
…但是如果变量和它周围的文本之间没有任何空格,那么应该使用
1 | echo"this is my variable:{$x}dollars"; |
因为如果你把它写成