---
title: "collapse() - Сплющення вкладених колекцій"
url: https://laravelukraine.com/blog/collapse-spliushhennia-vkladenix-kolekcii
author: "Олексій Бабінцев"
date: 2026-09-14
---

# collapse() - Сплющення вкладених колекцій

Маєте масив масивів? Потрібен один суцільний?

`collapse()` сплющує лише один рівень.

**Приклади використання:**

* Об'єднання кількох колекцій
* Сплющення згрупованих даних
* Комбінування результатів запитів

**Відмінність від flatten():**

* `collapse()` - один рівень
* `flatten()` - рекурсивно всі рівні

Порада: використовуйте `flatten()` для глибоко вкладених структур.

```php
// Масив масивів
$data = collect([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
]);

$flat = $data->collapse();
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

// Колекції у колекції
$tags = collect([
  collect(['php', 'laravel']),
  collect(['javascript', 'vue']),
  collect(['mysql', 'redis']),
]);

$allTags = $tags->collapse();
// ['php', 'laravel', 'javascript', 'vue', 'mysql', 'redis']

// Приклад: об'єднання дозволів користувача з ролей
$user->roles->map(fn($role) => $role->permissions)->collapse();

// Групування, а потім collapse
$orders = Order::all()
  ->groupBy('user_id')
  ->map(fn($userOrders) => $userOrders->pluck('items'))
  ->collapse();
```

```php
// Відмінність collapse vs flatten
$nested = collect([
  [1, [2, [3, 4]]],
  [5, [6, [7, 8]]],
]);

$nested->collapse(); // [1, [2, [3, 4]], 5, [6, [7, 8]]]
$nested->flatten();  // [1, 2, 3, 4, 5, 6, 7, 8]

// Об'єднання масивів із кількох моделей
$allEmails = collect([$users, $admins, $moderators])
  ->map(fn($group) => $group->pluck('email'))
  ->collapse()
  ->unique();

// Теги з постів
$uniqueTags = Post::with('tags')->get()
  ->map(fn($p) => $p->tags)
  ->collapse()
  ->unique('id');

// Комбінування результатів пошуку
$results = collect([$localResults, $apiResults])
  ->collapse()
  ->sortByDesc('relevance');
```
