首页 > 解决方案 > PHP 7.2 警告数组中未加引号的字符串不一致

问题描述

这给出了经典警告(在下一个版本中将是一个错误):

$var[$otherVar[someIndex]] = $myValue;

这不会:

$var["$otherVar[someIndex]"] = $myValue;

两者的工作原理相同。

PHP 7.2 不应该在这两种情况下发出警告吗?

如果没有,允许第二个的理由是什么,PHP 新版本试图强加的新规则?

标签: phparraysmigrationwarningsphp-7.2

解决方案


字符串插值不需要引用键,因为键已经是一个字符串。它不会被解释为一个常数(这是您从第一个示例中获得的消息的重点),并且您不可能获得$otherVar[someIndex()],因为在这种情况下甚至无法按预期工作。因此,barewords 的问题根本不适用。

如果您尝试说,您将收到一条消息$var["{$otherVar[someIndex]}"]。以这种方式插入的变量更像您期望的那样工作,并且someIndex将再次被解释为常量。


推荐阅读