使用后一种变体$array['key'].前者只能工作,因为PHP是宽容的,key如果没有常量命名键,则假设字符串值:
始终在字符串文字数组索引周围使用引号.例如,
$foo['bar']是正确的,而$foo[bar]不是.[...]这是错的,但它确实有效.原因是这个[...]有一个未定义的常量(bar)而不是一个字符串('bar'- 注意引号).
另见阵列做和不做.
现在与在纯PHP代码中访问数组相反,当在双引号字符串中使用变量解析时,实际上需要在没有引号的情况下编写它或使用大括号语法:
[...]在双引号字符串中,有效的是不用引号括起数组索引,因此
"$foo[bar]"是有效的.有关原因以及字符串中变量解析部分的详细信息,请参阅上面的示例.
所以:
// syntax error
echo "$array['key']";
// valid
echo "$array[key]";
echo "{$array['key']}";
Run Code Online (Sandbox Code Playgroud)