2011/6/20 Johannes Schlüter <johan...@schlueters.de>

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

Yes, sure. But if this feature is documented well, I can't see any
problems with this, especially if the trend goes towards a more
typed language where the user knows about the used data-type.


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

I know about the equality of the two bracket forms. But I read somewhere
that
the trend goes towards [] - and maybe it was something from you.

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

Reply via email to