为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕后森 2019-10-21 10:05:44
当插值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很老,并且发展了很多,因此引入了不一致的语法。


查看完整回答
反对 回复 2019-10-21
?
阿波罗的战车

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']

句法。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 476 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信