转自:http://segmentfault.com/q/1010000000120010
用 PHP 有一小段时间了,知道 $username
是代表一个变量,而且很多情况下都是这么写。
今天突然在一个地方看到 "${username}"
这样的写法,瞬间就不明白了。
这个${ }
是用来做什么呢,这玩意儿在 google 里不知道该怎么搜,搜不出来呃。
5 个回答
6
采纳
zhaoyi 2.1k
2012年09月21日 回答 · 2012年09月21日 更新
参考:http://php.net/manual/en/language.var...
为了解决一个模棱两可的问题,用在可能产生歧义的地方,明确告诉编译器如何解释代码。
// DaiJie 的代码中有一种以上的解释,php解释器不知道什么是对的。
$c = array('d'=>'e');
echo "{$c}['d']"; // Array['d']
$c = array('d'=>'e');
echo "${c['d']}"; // e
// null 的代码也有歧义
$var = "hello";
$var_ = "world";
echo "{$var}_ $var_"; //hello_ world
$var = "hello";
$var_ = "world";
echo "{$var_} $var_"; // world world
2
已注销 1.2k
2012年09月21日 回答 · 2012年09月21日 更新
突然发现两种写法都可以:
$str = "${username}";
$str = "{$username}";
突然想起了孔乙己的名言:“你知道回字有几种写法吗?”
主要作用是避免歧义。比如你要取一个
<?php
$c = array('d'=>'e');
echo "$c['d']";
会报错,而
echo "${c['d']}";
就没问题了。
不过发现两种写法也不完全等同,
$str = "{$a->test}";
是正确的,而
$str = "${a->test}";
会报错。
1
0
0
江小铭a 1
1月8日 回答
$title=1;
${"title_default_" . $title} = "selected";
echo $title_default_1;
//可变变量的 写法