How to access the nth object in a Laravel collection object?

@Phil's answer doesn't quite obtain the nth element, since the keys may be unordered. If you've got an eloquent collection from a db query it'll work fine, but if your keys aren't sequential then you'll need to do something different.

$collection = collect([0 => 'bish', 2 => 'bash']); $collection[1] // Undefined index

Instead we can do $collection->values()[1] // string(4) bash which uses array_values()

Or even make a macro to do this:

Collection::macro('nthElement', function($offset, $default = null) {
    return $this->values()->get($offset, $default);
}):

Example macro usage:

$collection = collect([0 => 'bish', 2 => 'bash']);
$collection->nthElement(1) // string(4) 'bash'
$collection->nthElement(3) // undefined index
$collection->nthElement(3, 'bosh') // string (4) bosh

Seeing as Illuminate\Support\Collection implements ArrayAccess, you should be able to simply use square-bracket notation, ie

$collection[$nth]

This calls offsetGet internally which you can also use

$collection->offsetGet($nth)

and finally, you can use the get method which allows for an optional default value

$collection->get($nth)
// or
$collection->get($nth, 'some default value')