PHP字符串嵌入式数组格式:" $ {arr [0]}" vs" {$ arr [0]}"

时间:2014-05-08 01:25:48

标签: php arrays string

在PHP中,您可以直接在(双引号)字符串中嵌入数组,但看起来有两种方法可以实现;例如:

$arr[0]="foobar";
echo "${arr[0]}";
echo "{$arr[0]}";

他们似乎都工作,但有什么区别?还是更好吗?

(由于谷歌缺乏特殊字符支持而难以查看,但我看到这两种格式都在使用中。)

3 个答案:

答案 0 :(得分:2)

根据PHP documentation on Strings"${arr[0]}""{$arr[0]}"都显示为有效示例。但是,在此之后,仅使用"{$arr[0]}"语法。所以你会假设,这是“首选”语法。

答案 1 :(得分:1)

他们都不是"更好"。它们只是用略微不同的语法表达的相同内容。查看有关字符串解析的手册页:http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing。这是一个非常好的文档页面,没什么好说的。

答案 2 :(得分:0)

两者都有效,因为两者都有效。来自the manual

  

复杂(卷曲)语法

     

这并不称为复杂,因为语法很复杂,但是因为   它允许使用复杂的表达式。

     

带字符串的任何标量变量,数组元素或对象属性   可以通过此语法包含表示。简单地写一下   表达式与字符串外部的表达方式相同,并且   然后将其包装在{和}中。由于{无法转义,因此将使用此语法   只有当$紧跟{时才会被识别。使用{\ $ to   得到一个文字{$。

// Won't work, outputs: This is { fantastic}
echo "This is { $great}";

// Works, outputs: This is fantastic
echo "This is {$great}";
echo "This is ${great}";

// Works
echo "This square is {$square->width}00 centimeters broad."; 


// Works, quoted keys only work using the curly brace syntax
echo "This works: {$arr['key']}";