Return first key of associative array in PHP

I'm trying to obtain the first key of an associative array, without creating a temporary variable via array_keys() or the like, to pass by reference. Unfortunately both reset() and array_shift() take the array argument by reference, so neither seem to be viable results.

With PHP 5.4 I'll be in heaven; array_keys($array)[0]; , but unfortunately this of course is not an option either.

I could create a function to serve the purpose, but I can only imagine there is some concoction of PHP's array_* functions that will produce the desired result in a single statement , that I cannot think of or come up with.

So:

$array = array('foo' => 'bar', 'hello' => 'world');

$firstKey = assorted_functions($array); // $firstKey = 'foo'

The reason for the "no reference" clause in my question is only for the fact that I assume array_keys() will be required (if there is a way passing by reference, please fire away)

I'd use key() , but that requires a reset() as I'm not sure where the pointer will be at the time of this operation.


Addendum

I'm following up on a realization I had recently: as I mentioned in the comments, it'll use the memory all the same, so if that's a concern, this question hath no solution.

$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)

I knew this, as PHP doesn't have such optimization capabilities, but figured it warranted explicit mention.

The brevity of the accepted answer is nice though, and'll work if you're working with reasonably sized arrays.


Although array_shift(array_keys($array)); will work, current(array_keys($array)); is faster as it doesn't advance the internal pointer.

Either one will work though.

Update

As @TomcatExodus noted, array_shift(); expects an array passed by reference, so the first example will issue an error. Best to stick with current();


You can use reset and key:

reset( $array );
$first_key = key( $array );

or, you can use a function:

function firstIndex($a) { foreach ($a as $k => $v) return $k; }
$key = firstIndex( $array );

array_shift(array_keys($array))
链接地址: http://www.djcxy.com/p/30122.html

上一篇: 流浪者卡住连接超时重试

下一篇: 在PHP中返回关联数组的第一个键