On Tue, Apr 27, 2004 at 02:16:43PM +0200, Marcus Boerger wrote:
> Hello Christian,
> 
> Tuesday, April 27, 2004, 1:34:47 PM, you wrote:
> 
> > Marcus Boerger wrote:
> >>>[ $a = 'foo'; $a['bar'] = 42; has an even weirder behaviour: It results 
> >>>in the string '4oo'... ]
> >> 
> >> That's a pretty. It is using 'bar' as a sting index to 'foo' and to do
> >> this it needs to convert 'bar' to an integer. The rest is obvious.
> 
> > So you find it obvious that 42 is cast to string and the first character 
> > is used as replacement? Wasn't obvious to me before I tried it :-)
> 
> That's what i meant it confuses far too many people and doesn't even make
> real sense. For example converting 42 into chr(42) and setting it would
> follow the same autoconversion logic. Hence a hint of kind E_STRICT would
> be very good.

I know I have no karma here, but anyway:

If you want to give people a hinting they access their stuff in a
wrong way *and* you want it in a consistent way:

why not throw an E_STRICT (or maybe even an E_NOTICE) when accessing anything
via [] that is not array?

$a = null; $a['foo']; -> should give an E_STRICT (if not an E_NOTICE)
$a = false; $a['foo']; -> should give an E_STRICT (if not an E_NOTICE)
$a = "FOO"; $a['foo']; -> should give an E_STRICT (if not an E_NOTICE)
$a = array(); $a['foo']; -> gives an E_NOTICE because of "undefined index 'foo'"
$a = array('foo'=>'FOO'); $a['foo'] -> obviously okay

just my few p.
messju
 
> marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to