ID:          21820
 Updated by:  [EMAIL PROTECTED]
 Reported By: george at omniti dot com
-Status:      Wont fix
+Status:      Critical
 Bug Type:    Scripting Engine problem
-PHP Version: 4.3.0
+PHP Version: 4.3.2-RC1
 New Comment:

This still provides a bogus E_NOTICE, which is the bug.  The feature
request of "$arr['foo']" working is #15677 not #21820

To simply fix the bug, 4.3.2 should provide a parse error just like
4.2.3 does.

A/the discussion took place on the zend2 mailing list, which can be
seen around here:

http://www.zend.com/lists/engine2/200302/maillist.html

Thread title: "[Zend Engine 2] fix for bug 21820"



Previous Comments:
------------------------------------------------------------------------

[2003-02-25 04:50:31] [EMAIL PROTECTED]

Stig's reply on the mailing list:

Take consistency further, and you wonder should "'a'" === "a"?
No, so why should "$foo['a']" === "$foo[a]"?
The index is already quoted, it's inside the string.
The syntax we're talking about here is supposed to be 
straightforward and simple, and for any kind of tricks we 
recommend the "{$foo['a']}" syntax. IMHO this would bloat the syntax
beyond straightforward.

--------

Thus we better keep it like it is now -> wont fix.



------------------------------------------------------------------------

[2003-02-13 13:04:39] [EMAIL PROTECTED]

I still maintain that the patch I posted is the right way 
to solve the problem.

$a['b'] is the 'correct' way to access an associative array 
outside of a quoted section, it should at least be allowed 
inside double quotes.  This encourages consisitency within 
the language.

------------------------------------------------------------------------

[2003-02-13 12:52:17] [EMAIL PROTECTED]

Marking as critical.  This is a serious bug as it's subtle and confuses
newbies, especially when they/we try to use autoglobals in strings. 
This bug fix really needs to make it into 4.3.1

------------------------------------------------------------------------

[2003-01-22 20:28:56] george at omniti dot com

This bug appeared in 4.3.0 as a result of the lexer changes 
added to ZE1 and ZE2 in november to speed up 
variableinterpolation in strings.  

Previous to 4.3 this was valid:

echo "$a[b]";
but 
echo "$a['b']"; generated a parse error.

The bug manifests itself by turning this parse error into a 
non-sensical E_NOTICE error.

The patch 'fixes' the bug by making 

echo "$a['b']";

work, which has been a pending feature request and seems 
nice (to me), or at least harmless.

------------------------------------------------------------------------

[2003-01-22 19:53:20] [EMAIL PROTECTED]

Anyone remember in what version of PHP this did work? :)
Correct (?) way to do this is:

<?php

 $arr = array('foo' => 'bar');
 print "{$arr['foo']}";

?>

Or at least I've started to use that just because of this bug.



------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/21820

-- 
Edit this bug report at http://bugs.php.net/?id=21820&edit=1

Reply via email to