Search

Laravel 5 Collections: Reducing a Multi-Dimensional Collection to a Single Dimension Losing Keys With flatten

April 22, 2018 —John Koster

The flatten method will return a new Collection instance representing a flattened version of the original collection's items. The flatten method internally makes use of the "Illuminate\Support\Arr::flatten($array)" helper method. The flatten method will not preserve any keys from the original collection.

#Signature

1public function flatten(
2 $depth = INF
3);

#Example Use

The following example demonstrates the usage of the flatten method:

1use Illuminate\Support\Collection;
2 
3// Create a new collection instance.
4$collection = new Collection([
5 'first',
6 'second' => [
7 'nested',
8 'array',
9 [
10 'deeply',
11 'nested'
12 ]
13 ],
14 'third' => 'some-value'
15]);
16 
17// Flatten the original collection.
18$flattenedCollection = $collection->flatten();

The $flattenedCollection variable will hold an instance of the Collection class and will have a value similar to the following output:

1object(Illuminate\Support\Collection)
2 protected 'items' =>
3 array
4 0 => string 'first'
5 1 => string 'nested'
6 2 => string 'array'
7 3 => string 'deeply'
8 4 => string 'nested'
9 5 => string 'some-value'

It is obvious in the above output that the flatten method does not preserve any of the original keys, and will even flatten deeply nested arrays.