我想知道,如何精确定义大括号的语义 在PHP里面?例如,假设我们已定义:
$a = "foo";
然后有什么区别:
echo "${a}";
echo "{$a}";
也就是说,是否有任何情况下放置 在大括号外的美元符号而不是在大括号内 差异或结果始终相同(使用大括号 几乎可以分组?
答案 0 :(得分:8)
大括号有很多可能性(例如省略它们),在处理对象或数组时事情变得更加复杂。
我更喜欢插值连接,我更喜欢在没有必要时省略括号。有时,他们是。
您不能使用${}
语法的对象运算符。调用方法或链接运算符时必须使用{$...}
(如果只有一个运算符,例如获取成员,则可省略大括号)。
${}
语法可用于变量变量:
$y = 'x';
$x = 'hello';
echo "${$y}"; //hello
$$
语法不会在字符串中进行插值,因此插值需要${}
。您还可以使用字符串(${'y'}
),甚至可以在${}
块中连接。但是,变量变量可能被认为是一件坏事。
对于数组,要么${foo['bar']}
与{$foo['bar']}
一致。我更喜欢$foo[bar]
(仅用于插值 - 在字符串bar
之外将被视为该上下文中的常量)。
答案 1 :(得分:4)
括号分隔变量名称的结尾;这个例子应该说明一切。
$a = "hi!"
echo "$afoo"; //$afoo is undefined
echo "${a}foo"; //hi!foo
echo "{$a}foo"; //hi!foo
此外,这应该吐出警告;你应该使用
${'a'}
否则会尝试假设a
是常数。
答案 2 :(得分:1)
您还可以使用大括号将Char置于字符串$i
的{{1}}位置:
$text
$i=2;
$text="safi";