On 07/14/2012 10:29 AM, Rasmus Lerdorf wrote:
> On 07/14/2012 10:13 AM, Anthony Ferrara wrote:
>> Gustavo,
>>
>> Why is the last key special? Why not a function to get the first or the
>>> penultimate key?
>>>
>>
>> How would such a function look?
> 
> I think the function would look just like the function we have for doing
> this.
> 
> key(array_slice($arr,-2));
> 
> And no, this has no side-effect of changing the array pointer in $arr,
> of course.
> 
> And array_last_key() is identical to array_slice($arr,-1) is it not?
> 
> The only thing array_last_key() saves is a single function call to
> key(). That doesn't seem worth it to me.

Ok, with the slight modification that for numeric keys we would want to
preserve the keys.

function array_last_key($arr) {
  return key(array_slice($arr,-1,null,true));
}

And despite what the docs say, the array pointer is not changed.
Test:

$a = [ 'first'=>1, 'second'=>2, 'third'=>3, 'last'=>4 ];
next($a);
next($a);
echo key($a);
echo array_last_key($a);
echo key($a);

This outputs:
third
last
third

-Rasmus

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

Reply via email to