On Sat, Jul 11, 2009 at 2:01 PM, Daniel Brown<danbr...@php.net> wrote:
> On Sat, Jul 11, 2009 at 13:45, Eddie Drapkin<oorza...@gmail.com> 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

>    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

Reply via email to