当插值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_WHITESPACEprint "He said $ha[ key1 ]"; # Error, unexpected T_ENCAPSED_AND_WHITESPACEprint "He said $ha[key1]"; # !! correct (How Comes?)毫无疑问,最后一行似乎是正确的PHP代码。有什么解释吗?可以信任此功能吗?编辑:现在发布的要点以黑体显示,以减少误解。
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
是的,您可以信任它。文档中介绍了所有插值变量的方法。
如果您有理由这样做,那么,我不能为您提供帮助。但还是一如既往:PHP很老,并且发展了很多,因此引入了不一致的语法。
阿波罗的战车
TA贡献1862条经验 获得超6个赞
是的,这是定义良好的行为,并且将始终查找字符串键'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']
句法。
- 3 回答
- 0 关注
- 476 浏览
添加回答
举报
0/150
提交
取消