我想知道,大括号的语义是如何在 PHP 中准确定义的?例如,假设我们定义了:
$a = "foo";
那么有什么区别:
echo "${a}";
echo "{$a}";
也就是说,是否存在将美元符号放置在大括号外而不是大括号内的任何情况,或者结果总是相同的(大括号用于对任何东西进行分组)?
我想知道,大括号的语义是如何在 PHP 中准确定义的?例如,假设我们定义了:
$a = "foo";
那么有什么区别:
echo "${a}";
echo "{$a}";
也就是说,是否存在将美元符号放置在大括号外而不是大括号内的任何情况,或者结果总是相同的(大括号用于对任何东西进行分组)?
大括号有很多可能性(例如省略它们),在处理对象或数组时事情变得更加复杂。
我更喜欢插值而不是串联,并且我更喜欢在不需要时省略大括号。有时,他们是。
您不能将对象运算符与${}
语法一起使用。调用方法时必须使用{$...}
,或者链接操作符(如果只有一个操作符比如获取成员,大括号可以省略)。
该${}
语法可用于变量变量:
$y = 'x';
$x = 'hello';
echo "${$y}"; //hello
该$$
语法不会在字符串中进行插值,因此${}
需要进行插值。您还可以使用字符串 ( ${'y'}
) 甚至在一个${}
块中连接。但是,可变变量可能被认为是一件坏事。
对于数组,任何一个都可以${foo['bar']}
与{$foo['bar']}
. 我更喜欢$foo[bar]
(仅用于插值 - 在该上下文中,字符串外部bar
将被视为常量)。
括号分隔变量名的结束位置;这个例子不言自明。
$a = "hi!"
echo "$afoo"; //$afoo is undefined
echo "${a}foo"; //hi!foo
echo "{$a}foo"; //hi!foo
此外,这应该发出警告;你应该使用
${'a'}
否则它将尝试假设a
是一个常数。
您也可以使用大括号将 Char 置于$i
string的位置$text
:
$i=2;
$text="safi";
echo $text{$i}; // f