On Sat, Jul 11, 2009 at 2:01 PM, Daniel Brown<danbrown@xxxxxxx> wrote: > On Sat, Jul 11, 2009 at 13:45, Eddie Drapkin<oorza2k5@xxxxxxxxx> wrote: >> >> If that's true, then we've found an error reporting bug! I've never >> seen an error/warning raised, even with my usual >> "error_reporting(E_ALL | E_STRICT | E_DEPRACATED)"! The warning is >> raised here, though: >> $foo = $bar[hello]; >> >> but not here: >> $foo = "$bar[hello]" > > No, we're crossing subjects here, actually. The error would be > raised in something such as the following: > > <?php > > $bar['hello'] = 'World!'; > $bar['world'] = 'Hello,'; > > $foo = <<<EOT > $bar['world'] $bar['hello'] > EOT; > > echo $foo."\n"; > ?> > Yeah, that (echo "$bar['hello']") would raise an error the same way as if you had said: echo $bar['\'hello\'']; because, as far as my understand goes, the array key "word" inside the doublequotes/heredoc is literally evaluated, so it'll look for the literal 'hello' key instead of the literal hello key, if that makes sense given the lack of formatting on my part. It looks like, when in lexing mode inside of doublequotes/heredoc, the lexer stops lexing at the first ] after a $ and inside the square bracketed "word", it interprets it as a hash table key, rather than as the literal word, which would be cast to a string (as an undefined constant) and then used as a hash table key outside of "lexing mode" (which is probably not the right way to describe what's going on inside heredoc or doublequotes). > You don't sound like an ass at all (quite the contrary, actually), > and not changing them certainly isn't the end of the world. Alright, was just a tad worried ;) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php