2017-09-12 42 views
1

我今天意外地测试了这个,有谁能向我解释为什么这会起作用,它是什么?

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

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

输出:测试-1500K

+3

它是[复杂(卷曲)语法](http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex)。如果您在双引号内使用大括号,PHP会将这些大括号内的整个字符串评估为一个变量,然后打印出结果。它允许你包含更复杂的变量,如'echo“,我的第一个孩子是{$ this-> child(0) - > firstName}”;' – Luke

+0

感谢这个另外的信息@Luke:D –

回答

1

双引号将字符串评估为表达式,并从中提取变量并将它们的值替换。但单引号显示字符串,因为是

如果你想了解更多的细节,你可以看到this答案在SO。

+0

感谢您的解释和链接......这将帮助我很多:D –

0

您的代码:

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

是一样的:

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

{} \只是包装阵列项目$a[0]['download']字符串放它的值有

+0

哦,我c ...非常感谢信息:) ...它真的让我不知道代码如何工作...:D –

0

在双引号字符串的上下文中,变量可以简单地按名称插入,但这对插入数组值不起作用,所以需要花括号来让PHP知道数组值是作为一个整体被插入到字符串中。

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

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

+0

感谢这样: ) –