Усі три повертають нову колекцію (чи значення) і не змінюють вихідну.
$prices = collect([100, 250, 40]);
$withVat = $prices->map(fn (int $p) => $p * 1.2); // [120, 300, 48]
$expensive = $prices->filter(fn (int $p) => $p > 50); // [0 => 100, 1 => 250]
$total = $prices->reduce(fn (int $sum, int $p) => $sum + $p, 0); // 390
$prices->all(); // [100, 250, 40] - без змін
map()- перетворює кожен елемент, кількість та сама;filter()- залишає елементи, що пройшли умову (без замикання - прибирає «порожні»);reduce()- зводить колекцію до одного значення будь-якого типу.
Пастка filter(): ключі зберігаються - вийде [0 => 100, 1 => 250], а після видалення середнього елемента було б [0 => ..., 2 => ...]. У JSON такий масив стане об'єктом. Перед відповіддю викликають values().
Мутуючі методи теж є, і їх варто знати, щоб не здивуватися: transform(), push(), put(), pop(), shift(), forget() змінюють саму колекцію.
Для простих сум є готові sum(), avg(), max() - reduce() потрібен для складнішого накопичення.