PHP中关联数组的插值(双引号字符串)

当插值PHP的字符串索引数组元素(5.3.3,Win32)时,可能会出现以下现象:


$ha = array('key1' => 'Hello to me');


print $ha['key1'];   # correct (usual way)

print $ha[key1];     # Warning, works (use of undefined constant)


print "He said {$ha['key1']}"; # correct (usual way)

print "He said {$ha[key1]}";   # Warning, works (use of undefined constant)


print "He said $ha['key1']";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE

print "He said $ha[ key1 ]";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE

print "He said $ha[key1]";     # !! correct (How Comes?)

毫无疑问,最后一行似乎是正确的PHP代码。有什么解释吗?可以信任此功能吗?


编辑:现在发布的要点以黑体显示,以减少误解。


慕后森
浏览 477回答 3
3回答

繁华开满天机

是的,您可以信任它。文档中介绍了所有插值变量的方法。如果您有理由这样做,那么,我不能为您提供帮助。但还是一如既往:PHP很老,并且发展了很多,因此引入了不一致的语法。

阿波罗的战车

是的,这是定义良好的行为,并且将始终查找字符串键'key',而不是(可能未定义)常量的值key。例如,考虑以下代码:$arr = array('key' => 'val');define('key', 'defined constant');echo "\$arr[key] within string is: $arr[key]";这将输出以下内容:$arr[key] within string is: val也就是说,编写这样的代码可能不是最佳实践,而是使用以下代码:$string = "foo {$arr['key']}"要么$string = 'foo ' . $arr['key']句法。
打开App,查看更多内容
随时随地看视频慕课网APP