Interpolation of Associative Arrays in PHP: An Unexpected Behavior
When interpolating associative array elements in PHP, certain behaviors may evoke surprise. Consider the following example:
<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>
Curiously, the last line appears to be valid PHP code. Why is this the case?
Explanation
Trust the seemingly unusual syntax. According to the official documentation, all methods of variable interpolation are supported. This includes accessing array elements within double-quoted strings without enclosing them in curly braces.
The reason for this particular behavior may not be entirely apparent, but it stems from PHP's historical evolution, where inconsistencies have inevitably crept in. Nevertheless, this feature is reliable and widely accepted as valid PHP syntax.
The above is the detailed content of Why Does PHP Allow Direct Interpolation of Associative Array Elements in Double-Quoted Strings?. For more information, please follow other related articles on the PHP Chinese website!