我不知道该如何解释这个问题,但通俗易懂地说,我看到有些人在输出数值时使用{$variable}
。我注意到{$variable}
并不是万能的。我们什么时候应该使用{$variable}
呢?
我不知道该如何解释这个问题,但通俗易懂地说,我看到有些人在输出数值时使用{$variable}
。我注意到{$variable}
并不是万能的。我们什么时候应该使用{$variable}
呢?
什么是 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/
"this is a {$class->prop}" and it is {class->method()}"
; https://dev59.com/ZWkw5IYBdhLWcg3wSoks - dlaub3有点晚了,但我想补充一下:
你甚至可以在花括号中使用变量,以动态地从类中访问对象的方法。
例如:
$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上进行了测试。
$username = $user->$username_method;
的输出结果都是相同的。我有什么遗漏了吗? - LobsterBaz$x
。echo "this is my variable value : $x dollars";
...但如果变量和周围的文本之间没有任何空格,你应该使用{}
。例如:
echo "this is my variable:{$x}dollars";
因为如果你把它写成$xdollars
,那么它就会被解释为另一个变量。
echo "this is my variable:{$x}dollars";
和echo "this is my variable:" . $x . "dollars";
之间有什么区别吗? - LobsterBazecho“这是我的变量:”,$x,“美元”;
的方式,这可能是最快的,但请记住,这种,
语法将实际函数参数与echo()分隔开,因此它特定于echo()。 - datenecho
示例中逗号分隔参数的说法似乎不正确。echo("foo", "bar");
是无效的。这使得上面的示例(echo "this is my variable:", $x, "dollars";-
)更加特定于echo
函数。 - daten
{{$variable}}
来输出内容。 - Asur"$var['key']"
怎么样?似乎不用花括号也能工作,但是有什么建议吗? - user9645