How to get the first element of an array in PHP?

Query explained:

I have an array:

array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )

I would like to get the first element of this array. Expected result: string apple

One requirement: it cannot be done with passing by reference, so array_shift is not a good solution.

How can I do this?

How to get the first element of an array in PHP?

Original answer, but costly (O(n)):

array_shift(array_values($array));

In O(1):

array_pop(array_reverse($array));

Other use cases, etc…

If modifying (in the sense of resetting array pointers) of $array is not a problem, you might use:

reset($array);

This should be theoretically more efficient, if a array “copy” is needed:

array_shift(array_slice($array, 0, 1));

With PHP 5.4+ (but might cause an index error if empty):

array_values($array)[0];

Answer #2:

The easiest possible way:

$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )
echo reset($arr); // Echoes "apple"

If you want to get the key: (execute it after reset)

echo key($arr); // Echoes "4"

From PHP’s documentation:

mixed reset ( array &$array );

Description:

reset() rewinds array’s internal pointer to the first element and returns the value of the first array element, or FALSE if the array is empty.

Code example to get the first element of an array in PHP:

$first_value = reset($array); // First element's value
$first_key = key($array); // First element's key

Answer #3:

current($array)

returns the first element of an array, according to the PHP manual.

Every array has an internal pointer to its “current” element, which is initialized to the first element inserted into the array.

So it works until you have re-positioned the array pointer, and otherwise you’ll have to use reset() which ll rewind array and ll return first element of array

According to the PHP manual reset.

reset() rewinds array’s internal pointer to the first element and returns the value of the first array element.

Examples of current() and reset()

$array = array('step one', 'step two', 'step three', 'step four');

// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"

//Forward the array pointer and then reset it

// skip two steps
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"

// reset pointer, start again on step one
echo reset($array) . "<br />\n"; // "step one"

Example answers:

Answer #1:

$arr = $array = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'

If you don’t want to lose the current pointer position, just create an alias for the array.

Answer #2:

You can get the Nth element with a language construct, “list”:

// First item
list($firstItem) = $yourArray;

// First item from an array that is returned from a function
list($firstItem) = functionThatReturnsArray();

// Second item
list( , $secondItem) = $yourArray;

With the array_keys function you can do the same for keys:

list($firstKey) = array_keys($yourArray);
list(, $secondKey) = array_keys($yourArray);

Answer #3:

PHP 5.4+:

array_values($array)[0];

Answer #4:

PHP 7.3 added two functions for getting the first and the last key of an array directly without modification of the original array and without creating any temporary objects:

  • array_key_first
  • array_key_last

Apart from being semantically meaningful, these functions don’t even move the array pointer (as foreach would do).

Having the keys, one can get the values by the keys directly.


Examples (all of them require PHP 7.3+)

Getting the first/last key and value:

$my_array = ['IT', 'rules', 'the', 'world'];

$first_key = array_key_first($my_array);
$first_value = $my_array[$first_key];

$last_key = array_key_last($my_array);
$last_value = $my_array[$last_key];

Getting the first/last value as one-liners, assuming the array cannot be empty:

$first_value = $my_array[ array_key_first($my_array) ];

$last_value = $my_array[ array_key_last($my_array) ];

Getting the first/last value as one-liners, with defaults for empty arrays:

$first_value = empty($my_array) ? 'default' : $my_array[ array_key_first($my_array) ];

$last_value = empty($my_array) ? 'default' : $my_array[ array_key_last($my_array) ];

Answer #5:

Some arrays don’t work with functions like listreset or current. Maybe they’re “faux” arrays – partially implementing ArrayIterator, for example.

If you want to pull the first value regardless of the array, you can short-circuit an iterator:

foreach($array_with_unknown_keys as $value) break;

Your value will then be available in $value and the loop will break after the first iteration. This is more efficient than copying a potentially large array to a function like array_unshift(array_values($arr)).

You can grab the key this way too:

foreach($array_with_unknown_keys as $key=>$value) break;

If you’re calling this from a function, simply return early:

function grab_first($arr) {
    foreach($arr as $value) return $value;
}

Answer #6:

Suppose:

$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

Just use:

$array[key($array)]

to get first element or

key($array)

to get first key.

Or you can unlink the first if you want to remove it.

Hope you learned something from this post.

Follow Programming Articles for more!

About ᴾᴿᴼᵍʳᵃᵐᵐᵉʳ

Linux and Python enthusiast, in love with open source since 2014, Writer at programming-articles.com, India.

View all posts by ᴾᴿᴼᵍʳᵃᵐᵐᵉʳ →