Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 何时将大括号括在变量周围_Php - Fatal编程技术网

Php 何时将大括号括在变量周围

Php 何时将大括号括在变量周围,php,Php,我不知道如何解释这一点,但简单地说,我见过人们在输出值时使用{$variable}。我注意到,{$variable}并不是万能的。什么时候应该使用{$variable}?什么是PHP花括号: 您知道字符串可以用四种不同的方式指定。其中两种方法是–双引号(“”)和herdoc语法。您可以在这两种类型的字符串中定义一个变量,PHP解释器也将在字符串中解析或解释该变量 现在,有两种方法可以在字符串中定义变量——简单语法是在字符串中定义变量最常用的方法,复杂语法使用大括号定义变量 大括号语法: 使用带有

我不知道如何解释这一点,但简单地说,我见过人们在输出值时使用
{$variable}
。我注意到,
{$variable}
并不是万能的。什么时候应该使用
{$variable}

什么是PHP花括号:

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

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

大括号语法:

使用带有花括号的变量非常简单。只需用{and}像这样包装变量:

{$variable\u name}

注意:{和$$之间不存在任何间隙。否则,PHP解释器不会将字符串作为变量来考虑。

花括号示例:

<?php
$lang = "PHP";
echo "You are learning to use curly braces in {$lang}.";
?>
何时使用大括号:

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

<?php
$var = "way";
echo "Two $vars to defining variable in a string.";
?>
在上面的示例中,PHP的解释器将$vars视为一个变量,但是,该变量是$var。要分隔变量名和字符串中的其他字符,可以使用大括号。现在,请参见上面使用大括号的示例-

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

资料来源:

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

您甚至可以使用大括号中的变量从类动态访问对象的方法

例如:

$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
数组中看到从用户对象获取的记录


据我所知,在PHP5.6上测试,您可以使用变量
$x

echo "this is my variable value : $x dollars";
…但是,如果变量与其周围的文本之间没有空格,则应使用
{}
。例如:

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

因为如果您编写它,它将把它解释为另一个变量。

这不是普通的php,可能是php框架语法,例如来自Laravel 5的刀片模板引擎使用
{$variable}
打印内容。@asur这是不正确的。这被称为@Ciccio的可能副本,但我认为他指的是花括号本身,而不是在printIMO中。这实际上是用花括号包围变量的主要用例。也就是说,使用变量的内容引用对象属性。你能添加更多的数据吗详细示例或带有真实示例的文章链接,谢谢。@karpreski。我添加了一个新示例。希望它变得更清晰:)看起来像
$username=$user->$username\u method;
无论我是否使用花括号,都会产生相同的输出。我是否遗漏了什么?它对类属性和方法。
“这是一个{$class->prop}”并且它是{class->method()}”
;这很有帮助。我也非常同意@dlaub3的观点,$class->prop(即使没有花括号!)几乎总是比{$var}更有效,至少在我的经验中是这样。这是我的变量:{$x};和
echo之间有区别吗这是我的变量:“.x.”美元“
除了语法之外?
/**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);
echo "this is my variable value : $x dollars";
echo "this is my variable:{$x}dollars";