Laravel Collections – collapse() Method

Laravel Collections – collapse() Method

Laravel Collections ( 10 Lessons )

Laravel Collections is one of the most powerful features of Laravel. Basically, collections are PHP arrays but it’s an Object Oriented approach to deal with PHP arrays.

see full series
  1. Laravel Collections – Introduction to Collections
  2. Laravel Collections – make Method
  3. Laravel Collections – wrap() and unwrap() Methods
  4. Laravel Collections – map() Method
  5. Laravel Collections – times() Method
  6. Laravel Collections – collapse() Method
  7. Laravel Collections – contains() & containsStrict() Methods
  8. Laravel Collections – each() Method
  9. Laravel Collection – Using toJson() Method
  10. Laravel Collection – Filtering Collection Items using where()

Laravel Collection provides a fluent, convenient wrapper for working with arrays. In this post, we will learn about collapse() method.

The collapse() method can be used to convert a multi-dimensional collection into a single dimension collection. In simple words, this method combines all the first level items of a collection into a new single collection.

The returned values of the collapse() method will be an instance of Illuminate\Support\Collection class.

Signature

Here is the signature of this method in Laravel Collection class.

/**
 * Collapse the collection of items into a single array.
 *
 * @return static
 */
public function collapse()
{
    return new static(Arr::collapse($this->items));
}

Example

To try the collapse() method, we will firstly create a new collection.

use Illuminate\Support\Collection;

$cities1 = [
    'London', 'Paris', 'Berlin', 'Moscow', 'Madrid'
];

$cities2 = [
    'New York', 'Toranto', 'San Jose', 'Tokyo', 'Sydney'
];

$collection = new Collection([$cities1, $cities2]);

The $collection variable now have the internal structure like below:

Collection {#514 ▼
  #items: array:2 [▼
    0 => array:5 [▼
      0 => "London"
      1 => "Paris"
      2 => "Berlin"
      3 => "Moscow"
      4 => "Madrid"
    ]
    1 => array:5 [▼
      0 => "New York"
      1 => "Toranto"
      2 => "San Jose"
      3 => "Tokyo"
      4 => "Sydney"
    ]
  ]
}

We can see that we have two arrays in the $collection variable which is an instance of the Laravel Collection class.

Using the collapse() method, we can combine both arrays into one collection which will have a single array.

$collapsed = $collection->collapse();

Now, the $collapsed variable will have a value similar to the following:

Collection {#509 ▼
  #items: array:10 [▼
    0 => "London"
    1 => "Paris"
    2 => "Berlin"
    3 => "Moscow"
    4 => "Madrid"
    5 => "New York"
    6 => "Toranto"
    7 => "San Jose"
    8 => "Tokyo"
    9 => "Sydney"
  ]
}

The collapse method does not recursively collapse inner arrays. The following example will create another collection which will have a nested array element.

$collect1 = [0,1,2,3,4,5];
$collect2 = [
    [6,7,8,9]
];

$collection = new Collection([$collect1, $collect2]);

Above $collection variable will have the following output.

Collection {#514 ▼
  #items: array:2 [▼
    0 => array:6 [▼
      0 => 0
      1 => 1
      2 => 2
      3 => 3
      4 => 4
      5 => 5
    ]
    1 => array:1 [▼
      0 => array:4 [▼
        0 => 6
        1 => 7
        2 => 8
        3 => 9
      ]
    ]
  ]
}

Now if we collapse this Laravel Collection, we will find the following output.

dd($collection->collapse());
Collection {#509 ▼
  #items: array:7 [▼
    0 => 0
    1 => 1
    2 => 2
    3 => 3
    4 => 4
    5 => 5
    6 => array:4 [▼
      0 => 6
      1 => 7
      2 => 8
      3 => 9
    ]
  ]
}

That’s all for now if you have any question please leave it in the comment box below.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

When sharing a code snippet please wrap you code with pre tag and add a class code-block to it like below.
<pre class="code-block">you code here</pre>

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.