Get first key in a (possibly) associative array?
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Introduction
If the question is about PHP arrays, the right answer depends mostly on the PHP version. Modern PHP has array_key_first, which returns the first key without disturbing the array pointer. In older versions, the common fallback is reset followed by key, with an extra check for empty arrays.
Understand What "First" Means in PHP Arrays
PHP arrays preserve insertion order. That means the "first key" is the first key in the current array order, not necessarily the smallest numeric key or the lexicographically smallest string key.
For example:
This returns "z" because that element was inserted first.
That is an important distinction when the array may be associative or mixed.
Use array_key_first on Modern PHP
If you are on PHP 7.3 or newer, use the built-in function.
This is the cleanest answer because it:
- returns the first key directly
- does not move the internal pointer
- works for numeric, string, and mixed keys
For an empty array, it returns null.
Use reset and key on Older PHP Versions
Before array_key_first existed, the common pattern was:
This works, but it moves the array's internal pointer to the first element. That may be fine in simple scripts, but it can matter if the same array is being iterated elsewhere with pointer-based functions.
You should also handle empty arrays explicitly:
Do Not Overcomplicate It With foreach
Another common trick is to use foreach and break immediately.
This works and does not rely on pointer functions, but it is more verbose than array_key_first and usually not the first choice unless you are stuck on an older version and prefer not to manipulate the pointer.
Associative Versus Indexed Does Not Change the Approach
The phrase "possibly associative" often suggests uncertainty about whether the array has numeric keys or string keys. In PHP, that does not really matter for this operation. All of the methods above work the same way regardless of key type.
So the real decision is not associative versus indexed. It is modern PHP versus legacy PHP.
Common Pitfalls
- Assuming "first key" means the smallest key is incorrect in PHP arrays because array order is insertion order.
- Using
resetandkeywithout thinking about the internal pointer can affect later pointer-based array operations. - Forgetting to handle the empty-array case can lead to misleading results or warnings in older patterns.
- Reaching for sorting functions changes the array order and answers a different question from "what is the first existing key."
- Writing a manual loop when
array_key_firstis available makes the code noisier than necessary.
Summary
- In modern PHP, use
array_key_firstto get the first key cleanly. - In older PHP versions,
reset($array)followed bykey($array)is the standard fallback. - PHP arrays preserve insertion order, so the first key means the first inserted element in the current order.
- Handle empty arrays explicitly if the code needs a safe null-like result.
- The method works the same whether the array is associative, indexed, or mixed.
Related reading
- Get first or last entry of a LinkedHashMap
- Get generic type of java.util.List
- Get JavaScript object from array of objects by value of property
- Get key by value in dictionary
- Get key by value in dictionary
- Get keys from HashMap in Java
- Get last element of Stream/List in a one-liner
- Get lengths of a list in a jinja2 template

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.