Get first key in a (possibly) associative array?

arrays, php

Solution

2019 Update

Starting from PHP 7.3, there is a new built in function called `array_key_first()` which will retrieve the first key from the given array without resetting the internal pointer. Check out the documentation for more info.

You can use `reset` and `key`:

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

It's essentially the same as your initial code, but with a little less overhead, and it's more obvious what is happening.

Just remember to call `reset`, or you may get any of the keys in the array. You can also use `end` instead of `reset` to get the last key.

If you wanted the key to get the first value, `reset` actually returns it:

$first_value = reset($array);

There is one special case to watch out for though (so check the length of the array first):

$arr1 = array(false);
$arr2 = array();
var_dump(reset($arr1) === reset($arr2)); // bool(true)

Problem

What's the best way to determine the first key in a possibly associative array? My first thought it to just foreach the array and then immediately breaking it, like this: ``` foreach ($an_array as $key => $val) break; ``` Thus having $key contain the first key, but this seems inefficient. Does anyone have a better solution?

Original source

Related problems