On Mon, 2011-06-20 at 17:49 +0200, Robert Eisele wrote:
> I would not consider this for arrays and objects, too. If we had real
> arrays, this would make sense but they are HT's and therewith it can also be
> explained that -1 is an element and not the end of the chained list behind
> the HT.

Yes. So having this in the current form accepted means that

    $a[-1];

can have two meanings:

    1) Get the last item (byte in a string)
    2) Get item `-1` (in an array)

Which are to different things.

Currently we treat

    $a{$o} and $a[$o]

as equal. My suggestion was to split this up to avoid the conflict from
above. I didn't suggest adding support for $a[-1] as last element for
arrays, I know quite well why this won't make sense.

johannes

> 2011/6/20 Johannes Schlüter <johan...@schlueters.de>
> 
> > On Mon, 2011-06-20 at 16:31 +0200, Etienne Kneuss wrote:
> > > >> Negative string offsets is a wish and also an implementation of my
> > running
> > > >> PHP version for long. It operates in the same fashion like substr()
> > with
> > > >> negative offsets, but avoids the function call and is much smarter if
> > one
> > > >> single character has to be extracted:
> >
> > > Do you mean ArrayObject? ArrayAccess is the interface.
> > > Regardless, I don't believe it makes sense to change the semantics of
> > > those indexes for arrays, since arrays can define negative indexes.
> > > i.e. $a = array(-1 => "foo", 2 => "bar"); $a[-1] should really be
> > > "foo", and not "bar".
> >
> > This clearly shows the inconsistency this brings. Maybe $var{$offset}
> > should be clearly deprecated for arrays and $var[$offset] for strings as
> > in PHP they work differently.
> >
> > johannes
> >
> >
> >



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

Reply via email to