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
将再次被解释为常量。
这给出了经典警告(在下一个版本中将是一个错误):
$var[$otherVar[someIndex]] = $myValue;
这不是:
$var["$otherVar[someIndex]"] = $myValue;
两者工作原理相同。
不应该 PHP 7.2 在这两种情况下都发出警告吗?
如果没有,允许第二个的理由是什么,新规则 PHP 新版本试图强加?
字符串插值不需要引用键,因为键已经是一个字符串。它不会被解释为常量(这是您从第一个示例中获得的消息的要点),并且您没有机会获得 $otherVar[someIndex()]
,因为这甚至不会按预期工作这个上下文。所以裸词的问题根本不适用。
如果您尝试说 $var["{$otherVar[someIndex]}"]
,您会收到一条消息。以这种方式插入的变量更像您期望的那样工作,并且 someIndex
将再次被解释为常量。