---
title: "map() vs transform() - трансформація колекцій"
url: https://laravelukraine.com/blog/map-vs-transform-transformaciia-kolekcii
author: "Олексій Бабінцев"
date: 2026-08-17
---

# map() vs transform() - трансформація колекцій

Потрібно змінити кожен елемент колекції?

`map()` і `transform()` роблять це, але працюють по-різному.

**Різниця:**

* `map()` повертає НОВУ колекцію, оригінал залишається без змін
* `transform()` змінює оригінальну колекцію

**Що коли використовувати:**

* `map()` - коли початкові дані потрібні пізніше
* `transform()` - коли треба зекономити пам'ять на великих колекціях

Порада: map() дозволяє повністю змінювати структуру, transform() зберігає ключі.

```php
// map() - створює нову колекцію
$users = User::all();
$names = $users->map(function ($user) {
  return strtoupper($user->name);
});

// transform() - змінює оригінал
$users = User::all();
$users->transform(function ($user) {
  $user->name = strtoupper($user->name);
  return $user;
});

// map() з короткими функціями
$prices = collect([100, 200, 300]);
$withTax = $prices->map(fn($p) => $p * 1.2);

// Повна зміна структури
$formatted = $users->map(fn($user) => [
  'id' => $user->id,
  'label' => "{$user->name} ({$user->email})"
]);

// mapWithKeys - власні ключі
$users->mapWithKeys(fn($user) =>
  [$user->email => $user->name]
);
```
