PHP 中关联数组的插值:意外行为
在 PHP 中插值关联数组元素时,某些行为可能会引起意外。考虑以下示例:
<code class="php">$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_WHITESPACE print "He said $ha[ key1 ]"; // Error, unexpected T_ENCAPSED_AND_WHITESPACE print "He said $ha[key1]"; // !! correct (How Comes?)</code>
奇怪的是,最后一行似乎是有效的 PHP 代码。为什么会这样?
解释
相信看似不寻常的语法。根据官方文档,支持所有变量插值方法。这包括访问双引号字符串中的数组元素,而不用大括号将它们括起来。
这种特殊行为的原因可能并不完全明显,但它源于 PHP 的历史演变,其中不可避免地出现了不一致。尽管如此,这个功能是可靠的,并且被广泛接受为有效的 PHP 语法。
以上是为什么 PHP 允许在双引号字符串中直接插值关联数组元素?的详细内容。更多信息请关注PHP中文网其他相关文章!