php - PHP 7.2 警告数组中未加引号的字符串不一致
问题描述
这给出了经典警告(在下一个版本中将是一个错误):
$var[$otherVar[someIndex]] = $myValue;
这不会:
$var["$otherVar[someIndex]"] = $myValue;
两者的工作原理相同。
PHP 7.2 不应该在这两种情况下发出警告吗?
如果没有,允许第二个的理由是什么,PHP 新版本试图强加的新规则?
解决方案
字符串插值不需要引用键,因为键已经是一个字符串。它不会被解释为一个常数(这是您从第一个示例中获得的消息的重点),并且您不可能获得$otherVar[someIndex()]
,因为在这种情况下甚至无法按预期工作。因此,barewords 的问题根本不适用。
如果您尝试说,您将收到一条消息$var["{$otherVar[someIndex]}"]
。以这种方式插入的变量更像您期望的那样工作,并且someIndex
将再次被解释为常量。
推荐阅读
- python - Django TemplateSyntaxError: 'endblock',预期为 'empty' 或 'endfor'。您是否忘记注册或加载此标签?
- html - 如何保持元素与可用空间对齐并以正确的空间垂直排列
- docker - Docker 在 nfs 上共享 workdir
- html - 如何从邮递员的以下响应中提取第一个 td 密码
- database - 迁移后测试数据库数据
- jquery - 如何增加自动完成搜索栏建议列表项(目前8个需要增加到16个)
- javascript - 三个 js:我想实现图像中显示的东西,我该怎么做,我尝试过 BoxGeomatry 和 planeGeomatry 也不一样
- php - php 使用 AJAX 从字符串创建文件
- verilog - 在 Verilog 中流水线化将 256 个 20 位字相加的加法器?
- ios - 将设备的时间和日期更改为较早的时间时,本地身份验证会出现系统取消错误