> > 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