Advertisement
Advertisement


Get the first element of an array


Question

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?

2014/04/12
1
1097
4/12/2014 8:11:03 AM

Accepted Answer

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];
2019/07/17
1395
7/17/2019 2:29:10 PM


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

$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.

2020/07/22

current($array) can get you 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 reset the array.

2019/07/17

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);
2019/07/17

PHP 5.4+:

array_values($array)[0];
2013/04/24

Source: https://stackoverflow.com/questions/1921421
Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Email: [email protected]