> > http://bugs.php.net/28879
> >
> This isn't a bug fix, but the behavior we chose.
> Basically only integers and strings are supported as array offsets.
> As you guessed, we converted doubles and bools to integers (possibly
> loosing info in doubles).
> As resources is something abstract, I'm not really sure we should "fix"
> this. Then again, it probably can't do much harm.
>
For myself, I agree with you.  Using resources as array offsets just feels
wrong, and I'm more than happy to leave that be.  My only concern there was
consistency with $arr[$res] = $val; behavior which *does* pickup the lval
and has since ages long past.

But since there's no BC need to allow resources in array initialization,
then sure, leave it to the scripter to cast it to an int if that's REALLY
what they want. (Again "why?" comes to mind).

> Objects can't be converted to integers because two different objects can
> have the same object id! I mentioned it a few times on this list.
>
Nor would I suggest we do that.  The portion of that bug report which refers
to objects is only asking why an error is thrown in $arr[$obj] = $val; style
while $arr = array($obj => $val); simply fails silently.

Here my reservation would be in throwing errors where there previously
wasn't one (this would apply to both Objects and Arrays as offsets).  If
this kind of scripting error is going to cause that name/value pair to
simply be ignored however, then it seems as though some notification should
be raised.

The $arr[$obj] = $val; style raises E_WARNING, so it makes sense (to me) to
do the same with the $arr = array($obj => $val); syntax.

-Sara

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

Reply via email to