#21820 [Ctl->Asn]: "$arr['foo']" generates bogus E_NOTICE, bc break

From: Date: Wed, 23 Apr 2003 07:34:08 +0000
Subject: #21820 [Ctl->Asn]: "$arr['foo']" generates bogus E_NOTICE, bc break
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-38131@lists.php.net to get a copy of this message
ID: 21820 Updated by: sniper@php.net Reported By: george at omniti dot com -Status: Critical +Status: Assigned Bug Type: Scripting Engine problem PHP Version: 4.3.2-RC1 -Assigned To: +Assigned To: andi New Comment: It's been couple of weeks (almost :) since Andi promised to fix this..maybe this will wake him up.. Previous Comments: ------------------------------------------------------------------------ [2003-03-13 14:05:48] philip@php.net 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" ------------------------------------------------------------------------ [2003-02-25 04:50:31] sniper@php.net 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] gschlossnagle@php.net 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] philip@php.net 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. ------------------------------------------------------------------------ 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

« previous php.bugs (#38131) next »