PHP ${}

转自: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
勇者天空 2.2k  2012年09月21日 回答

防止蹿变量的

<?php
$var = "hello";
$var_ = "world";
echo "{$var}_ $var_";
0
Airy 1.7k  2012年09月21日 回答 · 2012年09月21日 更新

变量名中的花括号的用途是提高优先级。

0
江小铭a 1  1月8日 回答

$title=1;
${"title_default_" . $title} = "selected";
echo $title_default_1;
//可变变量的 写法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值