对echo“{$ a [0] ['download']}”感到困惑

时间:2017-09-12 05:26:30

标签: php

今天我偶然测试了这个,有人可以向我解释为什么这有效,它是什么?

$a = array(
array(
'download' => '1500k'   
)
);

echo "Test-{$a[0]['download']}";

输出:Test-1500k

3 个答案:

答案 0 :(得分:1)

双引号将字符串计算为表达式并从中提取变量并改为使用它们的值。但单引号显示字符串

如果您想了解更多细节,可以在SO中看到this回答。

答案 1 :(得分:0)

您的代码:

 echo "Test-{$a[0]['download']}";

与:

相同
echo "Test-".$a[0]['download'];

{} \只是在字符串中包装数组项$a[0]['download']以将其值放在那里

答案 2 :(得分:0)

在双引号字符串的上下文中,变量可以简单地按名称插入,但这不适用于插入数组值,因此需要使用花括号让PHP知道整个数组值是插入字符串。

在你的例子中,如果你删除大括号,你会发现它会抛出一个错误,那是因为PHP无法知道[0] ['下载'部分不仅仅是一个字符串。它会将数组抛出到字符串转换错误。

这就是为什么花括号是必要的。