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