On Sat, Jul 14, 2012 at 4:34 AM, Paul Dragoonis <dragoo...@gmail.com> wrote:

> On Sat, Jul 14, 2012 at 3:04 AM, Anthony Ferrara <ircmax...@gmail.com>
> wrote:
> > Stas,
> >
> >> I like this idea. array_first_key would be nice too
> >>
> >> I am probably missing something, but what those would allow to do that
> >> rewind/end+key() doesn't do?
> >>
> >
> > The big thing that it does that end()+key() doesn't do is really what it
> > doesn't do (update the internal pointer).
> >
> > end() modifies the array pointer. So if you try this in user-land:
> >
> > function array_last_key(array $array) {
> >     end($array);
> >     return key($array);
> > }
> >
> > It will always force a full copy of the array (at least the hash table).
> > Implementing this as a core function however would eliminate that one
> > side-effect...
>
> and it beats doing $var = null; if(isset($array[0])) { $var = $array[0]; }
>
> Not sure that does the trick(you're pulling values, not keys, and assuming
0-based array), but...

What about reset(array_keys($array)); or end(array_keys($array)); which
only makes copies of the keys?
or even better key(array_slice($array, 0, 1, true)); or
key(array_slice($array,-1,1,true)); which makes a copy of one element of
the array?

I'm of the opinion that we mostly have enough array_* functions, and new
ones have to provide a significant advantage to be accepted. If these
functions are significantly faster than the alternatives, then perhaps they
have merit, but they seem like convenience functions, rather than
fundamentals.

John

Reply via email to