On Sat, Jul 11, 2009 at 14:15, Eddie Drapkin<[email protected]> wrote:
>
[snip!]
> which would be cast to a string (as an undefined constant) and then
[snip!]
That's exactly the point I was waiting for someone to make. I
wanted someone to question why it was a Bad Idea[TM] to leave the key
unquoted and typecast. I even tried to make a big enough deal about
it so as to draw attention, but not make the answer plainly-obvious.
And there ya' go. (Sorry, I feel like I'm in Teacher Mode today.... I
don't mean to come off as condescending, if I am.)
Q: Why should I use quotes in my array keys?
A: Because, while it can be typecast to the literal string, it
will be translated to the value of a previously-defined constant if
one exists by the same name.
.... but wait, there's more! This is where it gets fun and confusing.
When inside of a HEREDOC, all non-braced array variables' array
keys are forced literals, as opposed to translatables when the array
variable is braced. The following example (hopefully) will help to
explain what I mean:
<?php
$bar[apple] = 'Apple';
$bar[orange] = 'Orange';
define(apple,'orange');
echo $bar['apple']."\n"; // Apple - Quoting causes the literal string
to grab the typecast string
echo $bar[apple]."\n"; // Orange - The unquoted string is prioritized
as the defined constant
$foo = <<<EOT
$bar[apple] $bar[orange]
EOT;
$oof =<<<EOT
{$bar[apple]} {$bar[orange]}
EOT;
echo $foo."\n"; // Apple Orange - $bar[apple] is translated as a
whole, apple is not
echo $oof."\n"; // Orange Orange - apple is translated first into
orange, making both $bar[orange]
?>
--
</Daniel P. Brown>
[email protected] || [email protected]
http://www.parasane.net/ || http://www.pilotpig.net/
Check out our great hosting and dedicated server deals at
http://twitter.com/pilotpig
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php