On 01/05/07, Daevid Vincent <[EMAIL PROTECTED]> wrote:
> > > echo <<<EOF
> > > BROWSER: $_SERVER[HTTP_USER_AGENT]
> > > EOF;
> >
> > Isn't that form (sans quote marks) deprecated and frowned upon?
>
> <?php
>
> error_reporting( E_ALL );
>
> echo <<<EOF
> BROWSER: $_SERVER[HTTP_USER_AGENT]
> EOF;
>
> Why would cleaner, perfectly error free code be frowned upon?
http://us2.php.net/manual/en/language.types.array.php
"A key may be either an integer or a string. If a key is the standard
representation of an integer, it will be interpreted as such (i.e. "8" will
be interpreted as 8, while "08" will be interpreted as "08")."
I was always under the impression that using:
$_SERVER[HTTP_USER_AGENT] or $foo[myindex]
Was "bad" compared to the proper way of:
$_SERVER['HTTP_USER_AGENT'] or $foo['myindex']
True, but notice he's using it inside a heredoc string and the rules
are slightly different for string parsing.
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing
Whereas outside a string, $foo[myindex] will give you a notice and
$foo['myindex'] is OK; Inside a string, $foo[myindex] will give you no
notice and $foo['myindex'] will give you a parse error.
The manual suggests that $foo[myindex] is treated the same inside a
string as outside - if 'myindex' is defined as a constant then that is
what's used as the index. This doesn't seem to be born out by reality.
<?php
error_reporting(E_ALL);
$test = array(
'FOO' => 'Bareword',
'BAR' => 'Constant'
);
define( 'FOO', 'BAR');
print "\$test[FOO]: FOO is interpreted as a $test[FOO]\n";
print "{\$test[FOO]}: FOO is interpreted as a {$test[FOO]}\n";
print "{\$test['FOO']}: FOO is interpreted as a {$test['FOO']}\n";
?>
$ php5 test.php
$test[FOO]: FOO is interpreted as a Bareword
{$test[FOO]}: FOO is interpreted as a Constant
{$test['FOO']}: FOO is interpreted as a Bareword
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php