PHP 7.2 警告数组中不带引号的字符串不一致

PHP 7.2 warning for unquoted string in arrays inconsistency

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

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

这不是:

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

两者工作原理相同。

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

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

字符串插值不需要引用键,因为键已经是一个字符串。它不会被解释为常量(这是您从第一个示例中获得的消息的要点),并且您没有机会获得 $otherVar[someIndex()],因为这甚至不会按预期工作这个上下文。所以裸词的问题根本不适用。

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